我在python中的xor运算符(^
(有以下问题。我有两个二进制数,让a = 10100111
和b = 10000000
.当我使用异或运算符时,
print (10000000 ^ 10100111)
我得到的结果是166671而不是00100111。但是,当我使用
print (100 ^ 101)
我得到二进制 1 (001( 的适当结果。即使我使用
print int(a) ^ int(b)
我仍然得到166671的结果。
问题:
为什么我得到的是 166671 的结果而不是 00100111 的二进制结果?
为什么使用 100^101 时会得到适当的结果?
我正在运行 Python 版本 2.7.2。
>100
是十进制100
(二进制1100100
(。使用0bnnn
形式进行二进制表示。
>>> 0b100
4
>>> 100
100
>>> 0b100 == 100
False
>>> 0b100 ^ 0b101
1
>>> 0b100 & 0b101
4
>>> bin(0b100 & 0b101)
'0b100'
>>> '{:b}'.format(0b100 & 0b101)
'100'
您使用的是十进制数表示形式,而不是二进制。
10000000^10100111
在二进制中是
0b100110001001011010000000 ^ 0b100110100001110110001111
等于
0b101000101100001111
或十进制,
166671
100 ^ 101
在二进制中是
0b1100100 ^ 0b1100101
这是
0b1
或者,在十进制中(在这种情况下恰好与二进制相同(,
1