优先和位掩码操作
我遇到了一个(看似)很奇怪的例子。
取数字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);