优先级和位掩码操作

时间:2014-02-23 22:10:53

标签: php bit-manipulation bitwise-operators operator-precedence

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

取数字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

...所以?

1 个答案:

答案 0 :(得分:150)

你实际上是这样做的:

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

尝试:

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