我遇到了一个(看似)非常奇怪的案例。

取数字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 = True0b10 & 0b01 != 0 = False
...所以?

最佳答案

您实际上是在这样做:

var_dump(0b10 & (0b01 == 0));
var_dump(0b10 & (0b01 != 0));

尝试:
var_dump((0b10 & 0b01) == 0);
var_dump((0b10 & 0b01) != 0);

10-04 16:16