在python中使用XOR的二进制操作如何工作



我在python中的xor运算符(^(有以下问题。我有两个二进制数,让a = 10100111b = 10000000.当我使用异或运算符时,

print (10000000 ^ 10100111) 

我得到的结果是166671而不是00100111。但是,当我使用

print (100 ^ 101) 

我得到二进制 1 (001( 的适当结果。即使我使用

print int(a) ^ int(b) 

我仍然得到166671的结果。

问题:

  1. 为什么我得到的是 166671 的结果而不是 00100111 的二进制结果?

  2. 为什么使用 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

最新更新