2012-10-14 65 views
0

在閱讀「當天的面試問題」之後,我偶然發現了一個關於xor操作的不熟悉的編程語法。能夠而且將會有人解釋發生的事情時,執行上:在^ =操作中邏輯上究竟是怎麼回事?

result = 2; 
out.println(result ^= 10); // This gives a result of 8. 

result = 3; 
out.println(result ^= 10); // This gives a result of 9. 

result = 4;     
out.println(result ^= 10); // This gives a result of 14. 

我有一個很難搞清楚這一個....

+0

究竟你能不能找出什麼?看起來你知道這是'xor',有什麼令你困惑的? – Mat

+0

'4^10 = 9'是怎樣的?難道不是14? –

+0

這是14,可能是一個錯字 – NYCBilly

回答

0

這就是所謂的按位異或運算符。如果所有比較位都是1,那麼它是1.如果BOTH是1,或者BOTH是0,結果將是0.它實際上是在你正在比較的數字的BIT級上工作。

例子:

0010 ^= (XOR) 1010 = 1000 
(2) ^=  (10) = (8) 

0011 ^= (XOR) 1010 = 1001 
(3) ^=  (10) = (9) 

0100 ^= (XOR) 1010 = 1110 
(4) ^=  (10) = (14)