优先和位掩码操作

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

取数字2( 0b10 ),并用1( 0b01

这应该产生相当于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

…所以?

你实际上是这样做的:

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

尝试:

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