Python如何进行按位操作?它是从LSB到MSB,还是相反? Python如何对具有不同位数的数字进行操作?例如,假设我有:
A = 0000 1000 1111 1001 0101
B = 0110 1010
C = (A & B) is not 0
如果Python在每个上从MSB开始操作,这将评估为True,但如果它从每个LSB开始操作,它将评估为False。
答案 0 :(得分:2)
以二进制形式输入数字前置0b
(并省略空格),就像使用0x
表示十六进制数字一样:
A = 0b00001000111110010101
B = 0b01101010
C = (A & B) is not 0
你可以通过打印出来来检查python如何解释它(例如二进制和十六进制):
print('{0:b} {0:x}'.format(A))
# 1000111110010101 8f95
如你所见:它从LSB开始。
在将整数与is
:"is" operator behaves unexpectedly with integers进行比较时也会注意到python怪癖。因此==
可能是更安全的选择。