異或運算符號 ^
按照二進位制的位進行異或運算 兩個位分別為1、0(不分前後)結果為1,其他都為0
例如十進位制 二進位制
1 12 10
3 11
4 100
5 101
1^2結果二進位制就是11 轉換成十進位制就是3
4^5結果是1 轉換成十進位制還是1
根據上面的我們再來看
1^2=3
3^2=?
3的二進位制11 2的二進位制10
很顯然結果是1
4^5=1
4^1=5
5^1=4
根據這些 可以得出
如果a^b=c 成立
那麼可以推算出
a^c=b
b^c=a
這個特點可以用來兩個數字交換
int x=1; //公式中的a
int y=2; //公式中的b
x=x^y; //x變成公式中的c
y=x^y;//這句相當於 b^c可以得出a ,這時候y就有了原來a的值 y=a
x=x^y;//這句中 x=c y=a c^a=b 這時候x就有了原來b的值 x=b
//到這裡
//x=2 y=1
//兩數字交換完成,沒有用到中間變數
以上方法支援int 和long型別 使用異或運算交換兩個變數的危險
我們知道,在排序演算法中經常會需要交換序列中的兩個變數,常見有兩種方法 1.借助第三個臨時變數 交換 int temp array i array i array index array index temp 2.借助異或運算的特性 array i array i array index array...
異或運算實現兩個數的交換
通常的交換兩個變數a,b的過程為 int temp temp a a b b temp 需借助上面的第3個臨時變數temp.採用下面的方法,對於給定兩個整數a,b,下面的異或運算可以實現a,b的交換,而無需借助第3個臨時變數 a a b b a b a a b 這個交換兩個變數而無需借助第3個臨時變...
異或運算實現兩個數的交換
通常的交換兩個變數a,b的過程為 int temp temp a a b b temp 需借助上面的第3個臨時變數temp.採用下面的方法,對於給定兩個整數a,b,下面的異或運算可以實現a,b的交換,而無需借助第3個臨時變數 a a b b a b a a b 這個交換兩個變數而無需借助第3個臨時變...