我遇到了一个(看似)非常奇怪的案例。
取数字2(0b10
)并用1(0b01
)对其进行位掩码
这应该产生等于0的0b00
。
但是,这里是薛定ding先生进来的地方:
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
...所以?
最佳答案
您实际上是在这样做:
var_dump(0b10 & (0b01 == 0));
var_dump(0b10 & (0b01 != 0));
尝试:
var_dump((0b10 & 0b01) == 0);
var_dump((0b10 & 0b01) != 0);