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。因此 ==
可能是更安全的选择。
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。因此 ==
可能是更安全的选择。