2011-08-23 4 views
22
1^1 
# => 0 

1^2 
# => 3 

5^6 
# => 3 

これは私が得ている結果です。いいえ、誰かが^の仕組みを説明できますか?これはオペランドのバイナリ表現における各ビットについてbitwise XOR operator.ルビーのキャレット記号(^)の使用

だ、ビット単位のXORが両方のオペランドの対応するビットのいずれかが1である場合に1ビットを得るが、ません

答えて

32

、さもなければXORう0ビットを得る。ここでは例です:

5  = 101 
6  = 110 
5^6 = 011 = 3 
+3

同様0b110' Rubyでバイナリ、すなわち '0b101'を、'書くかもしれません... –

+0

私はRubyのDEVじゃないので、私は、Rubyはバイナリリテラルを持っていることを実際に認識していませんでした:) –

+0

ありがとう、私は誰かのコードで見つけたこの愚かさを解読するのを手伝った: 'if(blocks [blockname]^invertBlock)or consts ['Type'] == blockname' – Jason

関連する問題