你应该从这里开始:https ://wiki.python.org/moin/BitwiseOperators
x << y
返回 x ,其中位向左移动了 y 位(右侧的新位为零)。这与将 x 乘以 2**y 相同。
x >> y
返回 x,其中的位向右移动了 y 位。这与 //'ing x by 2**y 相同。
x & y
执行“按位与”。如果 x AND y 的对应位为 1,则输出的每一位为 1,否则为 0。
x | y
执行“按位或”。如果 x AND y 的对应位为 0,则输出的每一位为 0,否则为 1。
~ x
返回 x 的补数 - 通过将每个 1 转换为 0 并将每个 0 转换为 1 得到的数字。这与 -x - 1 相同。
x ^ y
执行“按位异或”。如果 y 中的该位为 0,则输出的每个位与 x 中的相应位相同,如果 y 中的该位为 1,则它是 x 中该位的补码。
根据维基百科:
函数 NAND(a1, a2, ..., an) 在逻辑上等价于 NOT(a1 AND a2 AND ... AND an)。
因此,为了对操作数a
和b
Python 进行按位 NAND 操作:
~(a & b)
您可以将其放入函数中:
bnand = lambda a, b: ~(a & b)
相应的非按位 NAND 将是:
not (a and b)
所以请确保不要混淆and
and &
(以及not
and ~
);此外,逻辑运算符是小写的。
PS另外,请确保您阅读此内容:Python:无符号 32 位按位算术