for i in range(10):
if i&3 == 0 or i%5 == 0:
print(i)
猜猜输出是什么?
0 4 五 8
4和8不应该是输出。为什么会这样?
答案 0 :(得分:2)
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
这些数字出现的原因是因为最后两位是关闭的' 00' (i& 3),或者最后三位是' 000'或者' 010'