平常交换两个数一般是利用一个中间变量,其实可以利用异或^也可以实现交换,而且效率更快哦!
代码如下:
void Swap(int& a,int& b){
if(a!=b){
a^=b;
b^=a;
a^=b;
}
}
原理:利用相同的数异或必为0,异或满足交换率和任何数和0异或都等于本身。
比如:
1.a=a^b;
2.b=b^a=b^(a^b)=b^b^a=0^a=a;
3.a=a^b=a^(b^a)=b^a^a=b^0=b;
证毕。