異或運算進行兩數交換

2022-08-16 02:57:21 字數 648 閱讀 7085

直接上**:

swap(int a,int

b)

解析:此方法簡潔明瞭。先來講一下異或運算的性質:

異或運算可看做不進製的加法!

(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個臨時變...