異或 實現a和b兩變數交換

2021-07-07 07:27:24 字數 404 閱讀 1007

今天在看c語言的位運算時,看到了如下交換a,b兩值的方法:

a = a^b;

b = a^b;

a = a^b;

後來想想,真是太神奇了!其實,我們首先知道,對於任意的x滿足:

x^x == 0;

x^0 == x;

那麼上面的式子事實上是利用了如上的規則,首先用a儲存了a^b的 值,再用b = a ^ b = (a^b)^b=a^b^b=a^(b^b)=a^0=a,這樣就成功的實現了b = a;接著又用a = a^b = (a^b)^b(第乙個b還是原來的b,而第二個b已經是a的值,因為前面已經實現了交換)= (a^b)^a = a^a^b = 0^b = b,這樣就實現了a = b;於是,就成功的實現了a,b兩個值的交換。

本文出自 「風輕雲淡」 部落格,請務必保留此出處

異或 實現a和b兩變數交換

今天在看c語言的位運算時,看到了如下交換a,b兩值的方法 a a b b a b a a b 後來想想,真是太神奇了!其實,我們首先知道,對於任意的x滿足 x x 0 x 0 x 那麼上面的式子事實上是利用了如上的規則,首先用a儲存了a b的 值,再用b a b a b b a b b a b b ...

使用異或實現兩數交換

如果a b兩個值不相同,則異或結果為1。如果a b兩個值相同,異或結果為0。異或也叫半加運算,其運算法則相當於不帶進製的二進位制加法 二進位制下用1表示真,0表示假,則異或的運算法則為 0 0 0,1 0 1,0 1 1,1 1 0 同為0,異為1 這些法則與加法是相同的,只是不帶進製,所以異或常被...

異或運算實現兩數交換

在 演算法競賽入門經典 第2版 p9,介紹了三種交換兩個數的方法。1 三變數法 incldueusing namespace std int main 2 不借助其他變數 incldueusing namespace std int main 3 異或運算 異或 是乙個數 算符。它應用於邏輯運算。異...