我遇到了一个(看似很奇怪的)非常奇怪的案例。
取数字2(0b10
)并将其用1(0b01
)
这应该产生0b00
,相当于0。
然而,这是Schrödinger先生所在的地方:
var_dump(0b10 & 0b01); // int(0)
var_dump(0b10 & 0b01 == 0); // int(0)
var_dump(0b10 & 0b01 != 0); // int(0)
威士忌。探戈。狐步。
当然,对于按位运算符来说,我并不是最敏锐的 - 所以也许我在某处可怕,可怕的错误?
然而,在Python中:
0b10 & 0b01 == 0
= True
0b10 & 0b01 != 0
= False
...所以?
答案 0 :(得分:150)
你实际上是这样做的:
var_dump(0b10 & (0b01 == 0));
var_dump(0b10 & (0b01 != 0));
尝试:
var_dump((0b10 & 0b01) == 0);
var_dump((0b10 & 0b01) != 0);