优先级和位掩码操作

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

取数字 2 () 并用 1 (0b100b01)

这应该产生等效于 0 的结果。0b00

然而,这是薛定谔先生的用武之地:

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

...所以?


答案 1

您实际上正在执行此操作:

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

尝试:

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

答案 2

推荐