soarli

异或运算实现两个数的交换
通常的交换两个变量a,b的过程为:int temp; temp=a a=b; b=temp;需花费额外的空间。使用...
扫描右侧二维码阅读全文
11
2022/01

异或运算实现两个数的交换

通常的交换两个变量a,b的过程为:

int temp;
temp=a
a=b;
b=temp;

需花费额外的空间。

使用异或运算进行交换则不必开辟额外的内存空间:

a = a ^ b;
b = a ^ b;
a = a ^ b;

原理:

  1. 任意一个变量X与其自身进行异或运算,结果为0,即X^X=0
  2. 任意一个变量X与0进行异或运算,结果不变,即X^0=X
  3. 异或运算具有可结合性,即a^b^c=(a^b)^c=a^(b^c)
  4. 异或运算具有可交换性,即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

最后修改:2022 年 01 月 11 日 12 : 30 AM

发表评论