2013-08-17 82 views
1

我不明白這個理解XOR邏輯運算符

2.0.0p247 :616 > 5^2 
=> 7 
2.0.0p247 :617 > 5^1 
=> 4 

什麼7,並在這些方案4分的手段?

我嘗試在這裏閱讀http://en.wikipedia.org/wiki/Exclusive_disjunction,但無法通過查看圖表來看出什麼是減法。對不起,如果這是簡單的數學問題。

+1

這是Ruby的獨家行爲?爲什麼不標記它[標籤:語言不可知]? –

+2

http://en.wikipedia.org/wiki/Bitwise_operation#XOR –

回答

10

它與值的二進制表示形式有關。

5 = 0101 
2 = 0010 
1 = 0001 

現在XOR是這樣的:

0^0 = 0 
0^1 = 1 
1^0 = 1 
1^1 = 0 

這樣計算5^2,讓我們應用^操作每一列

0101 (this is 5) 
0010 (this is 2) 
---- 
0111 ==> which is the binary representation of 7 

是如何發揮作用?在最左邊一列中,我們計算了0^0=0。在第二欄中,1^0=1。在第三列0^1=1中,依此類推。

和5^1

0101 (this is 5) 
0001 (this is 1) 
---- 
0100 ==> which is the binary represenation of 4 
+0

仍然不明白。爲什麼'5^2'似乎加起來,'5^1'在你的樣本中減去? – Martin

+0

哦,對不起!將'^'應用於每列。這不是加法或減法。我會讓答案更清楚。 –

+0

那是我的問題。它是什麼?我很難理解這裏的數學。 – Martin