2013-10-08 62 views
4

python中的異或運算符(^)有以下問題。我有兩個二進制數字,讓a = 10100111b = 10000000。當我使用XOR運算符,如何在Python中使用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。

+0

除了:這與你在這裏的問題無關,但有一件事經常令人驚訝,Python 2中的人是'010'不是10(十進制讀取)或2(二進制讀取),它是8。 PREF ix,沒有'b'的意思是「把這個數字讀成八進制數,即基數8」。只是單挑。 – DSM

回答

2

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' 
+0

請告訴python 3的解決方案。x,例如x = 100,y = 101 x^y –

+0

@AkhilNadhPC,'bin(0b100^0b101)'在Python 3中有效。 – falsetru

1

您使用十進制數表示,而不是二進制。

10000000^10100111 
二進制

0b100110001001011010000000^0b100110100001110110001111 

其等於

0b101000101100001111 

或十進制,

166671 

100^101 
二進制

0b1100100^0b1100101 

0b1 

,或者在十進制(這恰好是相同於在這種情況下二進制),

1 
相關問題