4

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

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 版。

4

2 回答 2

3

100是十进制1001100100二进制)。使用0bnnn表单进行二进制表示。

>>> 0b100
4
>>> 100
100
>>> 0b100 == 100
False

>>> 0b100 ^ 0b101
1

>>> 0b100 & 0b101
4
>>> bin(0b100 & 0b101)
'0b100'
>>> '{:b}'.format(0b100 & 0b101)
'100'
于 2013-10-08T15:58:54.667 回答
2

您使用的是十进制数字表示,而不是二进制。

10000000^10100111

二进制是

0b100110001001011010000000 ^ 0b100110100001110110001111

这等于

0b101000101100001111

或十进制,

166671 

100 ^ 101

二进制是

0b1100100 ^ 0b1100101

这是

0b1

或者,十进制(在这种情况下恰好与二进制相同),

1
于 2013-10-08T16:05:21.017 回答