Python 和位运算

Python and Bitwise Operations

Python如何进行位运算?是从 LSB 到 MSB,还是相反? Python如何对不同位数的数字进行运算?例如,假设我有:

A = 0000 1000 1111 1001 0101
B = 0110 1010
C = (A & B) is not 0

如果 Python 从每个的 MSB 开始操作,这将评估为 True,但如果它从每个的 LSB 开始操作,它将评估为 False。

要以二进制形式输入数字,请在前面加上 0b(并省略空格),就像使用 0x 十六进制数字一样:

A = 0b00001000111110010101
B = 0b01101010
C = (A & B) is not 0

您可以通过打印出来(例如二进制和十六进制)来检查 python 是如何解释它的:

print('{0:b} {0:x}'.format(A))
# 1000111110010101 8f95

如您所见:它从 LSB 开始。

还请注意 python 将整数与 is 进行比较时的怪癖:"is" operator behaves unexpectedly with integers。因此 == 可能是更安全的选择。