Python for循环中的按位AND和modulo会产生意外的结果
猜猜结果是什么 0 4. 5. 八, 4和8不应该是输出。为什么会发生这种情况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
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