4

^Pythonの xor 演算子 ( ) に次の問題があります。leta = 10100111との 2 つの 2 進数がありb = 10000000ます。xor 演算子を使用すると、

print (10000000 ^ 10100111) 

00100111 の代わりに 166671 の結果が得られます。

print (100 ^ 101) 

1 (001) のバイナリで適切な結果が得られます。使っても

print int(a) ^ int(b) 

私はまだ166671の結果を得ています。

質問:

  1. 00100111 のバイナリ結果ではなく、166671 の結果が得られるのはなぜですか?

  2. 100^101 を使用すると適切な結果が得られるのはなぜですか?

Python バージョン 2.7.2 を実行しています。

4

2 に答える 2

3

10010 進数100( 11001002 進数) です。0bnnnバイナリ表現には form を使用します。

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

2 進数ではなく 10 進数表現を使用しています。

10000000^10100111

バイナリでは

0b100110001001011010000000 ^ 0b100110100001110110001111

等しい

0b101000101100001111

または10進数で、

166671 

100 ^ 101

バイナリでは

0b1100100 ^ 0b1100101

これは

0b1

または、10 進数 (この場合は 2 進数と同じ)、

1
于 2013-10-08T16:05:21.017 に答える