Python for循环中的按位AND和modulo会产生意外的结果

Python for循环中的按位AND和modulo会产生意外的结果,python,Python,猜猜结果是什么 0 4. 5. 八, 4和8不应该是输出。为什么会发生这种情况 for i in range(10): if i&3 == 0 or i%5 == 0: print(i) 显示这些数字的原因是,要么最后两位关闭了“00”(i&3),要么最后三位是“000”或“010”4&3等于0。你的意思是说,i%3?你错过了安培生&而且%在第一个条件中歌唱。非常感谢。我错过了。你为什么说输出中不应该有4?4和3没有共同的一个位——4是100,3是011,因此4

猜猜结果是什么

0 4. 5. 八,

4和8不应该是输出。为什么会发生这种情况

for i in range(10):
    if i&3 == 0 or i%5 == 0:
        print(i)

显示这些数字的原因是,要么最后两位关闭了“00”(i&3),要么最后三位是“000”或“010”

4&3
等于
0
。你的意思是说,
i%3
?你错过了安培生&而且%在第一个条件中歌唱。非常感谢。我错过了。你为什么说输出中不应该有4?4和3没有共同的一个位——4是
100
,3是
011
,因此
4和3
是0。我打算使用%而不是&。现在我要学习什么是&意味着什么。谢谢。欢迎光临这是一个有点“和”的操作。
In [1]: bin(3)
Out[1]: '0b11'

In [2]: bin(5)
Out[2]: '0b101'

In [3]: for i in range(10):
...:     print i, bin(i), i&3, bin(i&3), i&5, bin(i&5)
...:   
0 0b0 0 0b0 0 0b0
1 0b1 1 0b1 1 0b1
2 0b10 2 0b10 0 0b0
3 0b11 3 0b11 1 0b1
4 0b100 0 0b0 4 0b100
5 0b101 1 0b1 5 0b101
6 0b110 2 0b10 4 0b100
7 0b111 3 0b11 5 0b101
8 0b1000 0 0b0 0 0b0
9 0b1001 1 0b1 1 0b1