优先级和位掩码操作

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

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

所以呢?

4743 次浏览

You are actually doing this:

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

Try:

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