直接上**:
swap(int a,intb)
解析:此方法簡潔明瞭。先來講一下異或運算的性質:
異或運算可看做不進製的加法!
(1) 任何數異或自身等於0。(因為自身就是兩個相同的數相加,每一位都一樣,要麼0要麼1,1+1和0+0按照不進製加法就是0)
(2) 任何數異或0都等於自身。
這個很好理解,任何數加0都等於本身嘛。
(3)
異或滿足結合律和交換律。
有了這三點,那麼分析**:
a = a^b;//現在a = a^b,b還是b
b = a^b;//現在b = (a^b)^b; 由第二點和第三點得: 現在b= a^(b^b) = a^0=a;
a = a^b;//現在a = (a^b)^a; 同理得:a = a^a^b = b;
綜上可看出,a和b實現了交換。
優勢:位運算的效率要高於加減乘除。
異或運算實現兩數交換
在 演算法競賽入門經典 第2版 p9,介紹了三種交換兩個數的方法。1 三變數法 incldueusing namespace std int main 2 不借助其他變數 incldueusing namespace std int main 3 異或運算 異或 是乙個數 算符。它應用於邏輯運算。異...
使用異或實現兩數交換
如果a b兩個值不相同,則異或結果為1。如果a b兩個值相同,異或結果為0。異或也叫半加運算,其運算法則相當於不帶進製的二進位制加法 二進位制下用1表示真,0表示假,則異或的運算法則為 0 0 0,1 0 1,0 1 1,1 1 0 同為0,異為1 這些法則與加法是相同的,只是不帶進製,所以異或常被...
異或運算實現兩個數的交換
通常的交換兩個變數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個臨時變...