**如下
/** \brief swap 異或交換兩元素
* \author ***
* \version 1.0
* \date 2020-1-4
* \bug 不能指向同乙個記憶體位址
* * \param[in] a 輸入a
* \param[in] b 輸入a
* \return void
*/void
swap
(int
*a,int
*b)
下面來解釋這段**,首先基於兩個異或的知識點
1. 自己和自己異或等於0,即a^a=0
2. 0和任何數異或等於它自己,即0^a=a
接著下面的**就很好理解了
a^b^b =a^
0=a // 第一句**^第二句**
a^a^b =
0^b=b // 第三句**
看著有點傻,這肯定啊。上面的三句**的原理就是這兒,仔細想想就知道了
注意:該函式有乙個缺點,a和b不能指向同乙個記憶體單元,這樣就變成0了哈,如果實際情況存在這種情況就不能用哈,這種方式確實節約了乙個臨時變數的儲存空間。
答案:一直異或下去,結果就是答案哈
哈哈,這個自己想…
使用異或實現兩數交換
如果a b兩個值不相同,則異或結果為1。如果a b兩個值相同,異或結果為0。異或也叫半加運算,其運算法則相當於不帶進製的二進位制加法 二進位制下用1表示真,0表示假,則異或的運算法則為 0 0 0,1 0 1,0 1 1,1 1 0 同為0,異為1 這些法則與加法是相同的,只是不帶進製,所以異或常被...
異或操作交換元素容易產生的問題
利用異或操作交換兩個元素已不是什麼新鮮話題了。1異或寫法 2傳統寫法 有很多程式設計師已經逐漸接受並喜歡使用這種異或寫法了,問之優點,大多數程式設計師都會從時間效能,空間效能,簡潔性三方面做回答。由於位操作較賦值操作的確快了些,空間上僅僅節約乙個單位,至於簡潔性就有點牽強了 明顯差不多嘛 可讀性反倒...
使用異或交換資料值的原理
大家都知道,假如有a,b兩個整型數,我們可以用 a b b a a b 來交換a,b的值,在這裡我說說其中的原理 在 c 裡面是按位異或操作符,相同的話異或的結果就是 0,不同的話就是 1。舉個例子,比如 a 表示十進位制的 5,b 表示十進位制的 12,按位異或結果就是 a 0101 5 的二進位...