通常的交换两个变量a,b的过程为:
int temp;
temp=a
a=b;
b=temp;
需花费额外的空间。
使用异或运算进行交换则不必开辟额外的内存空间:
a = a ^ b;
b = a ^ b;
a = a ^ b;
原理:
- 任意一个变量X与其自身进行异或运算,结果为0,即X^X=0
- 任意一个变量X与0进行异或运算,结果不变,即X^0=X
- 异或运算具有可结合性,即a^b^c=(a^b)^c=a^(b^c)
- 异或运算具有可交换性,即a^b=b^a
C语言实现:
int main()
{
int a = 4, b = 5;
printf("a=%d b=%d\n", a, b);
a = a ^ b;
b = a ^ b;
a = a ^ b;
printf("a=%d b=%d\n", a, b);
}
运行结果:
[root@test cs]# ./a.out
a=4 b=5
a=5 b=4
参考资料:
https://www.ruanyifeng.com/blog/2021/01/_xor.html
https://blog.csdn.net/heathyhuhu/article/details/12744407
版权属于:soarli
本文链接:https://blog.soarli.top/archives/588.html
转载时须注明出处及本声明。