我遇到了一个(看似)非常奇怪的案例。
取数字 2 (0b10
) 并用 1 (0b01
) 对其进行位掩码
这应该产生 0b00
相当于 0。
然而,这就是薛定谔先生的用武之地:
var_dump(0b10 & 0b01); // int(0)
var_dump(0b10 & 0b01 == 0); // int(0)
var_dump(0b10 & 0b01 != 0); // int(0)
威士忌。探戈。狐步舞。
诚然,我在位运算符方面并不是最敏锐的 - 所以也许我在某个地方出现了可怕的错误?
但是,在 Python 中:
0b10 & 0b01 == 0
= 真
0b10 & 0b01 != 0
= 假
...所以?
最佳答案
你实际上是这样做的:
var_dump(0b10 & (0b01 == 0));
var_dump(0b10 & (0b01 != 0));
试试:
var_dump((0b10 & 0b01) == 0);
var_dump((0b10 & 0b01) != 0);
关于php - 优先级和位掩码操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21975334/