常用技巧 —— 位运算 —— 异或运算实现两个数的交换
生活随笔
收集整理的這篇文章主要介紹了
常用技巧 —— 位运算 —— 异或运算实现两个数的交换
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
【概述】
交換變量時,通常是借助一臨時變量來賦值實現
void exchange(int a,int b) {int temp;temp=a;a=b;b=temp; }當采用異或運算時,實現兩變量交換無需借助第三個臨時變量
void exchange(int &a, int &b) {a ^= b;b ^= a;a ^= b; }【異或運算性質】
其實現基于異或運算的如下性質:
【實現過程分析】
第一步:a = a ^ b;
? ? 完成后,a 的值為:a ^ b
第二步:b = a ^ b;
? ? a?的值是?a?^ b,執行后,得到 b=(a ^ b) ^ b=a ^ (b ^ b)=a ^ 0=a
? ? 即運算后 b 的值為 a
第三步:a = a ^ b;
? ? 此時 a 的值仍然是 a ^ b,b 的值為 a,執行后,得到 a=(a ^ b) ^ a=a ^ a^ b=0 ^ b=b
? ? 即運算后 a 的值為 b
【注意事項】
進行交換時,如果 a、b 兩變量的值相等,則會使得 &a、&b 指向同一地址,從而引發錯誤,因此需要判斷兩數是否相等。
void exchange(int &a, int &b) {if(a!=b){a ^= b;b ^= a;a ^= b;} }?
總結
以上是生活随笔為你收集整理的常用技巧 —— 位运算 —— 异或运算实现两个数的交换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 进制转换(洛谷-P1017)
- 下一篇: 鸣人的影分身(信息学奥赛一本通-T130