1、基本概念
异或是二进制数的位运算,两个二进制数相对应的位作比较,相同为0,不同为1。
2、使用技巧
两个数进行异或运算后得到的值,这个值在与这两个数分别进行异或运算,得到的结果就是对方的值。
例:两个变量a=5,b=9,a的二进制数为0101,b的二进制数为1001
c=a^b=1100;
b=a^c=1001;
a=b^c=0101;
3、应用场景
在通常情况下,交换两个数的值需要声明第三个数来临时存储其中一位,如:
#include<stdio.h>
int main(void)
{
int a=5;
int b=9;
int c=0;
c=a;
a=b;
b=c;
printf("%d %d %d",a,b,c);
return 0;
}
想一想,如何避免多声明一个变量,没错,异或可以帮您实现:
#include<stdio.h>
int main(void)
{
int a=5;
int b=9;
int c=0;
a^=b;//此时a就等于上面的c的值
b^=a;//相当于b^c,异或后b得到a的值
a^=b;//此时a为c的值,b为a的值,所以a^c,就得到了b的值
printf("a=%d b=%d c=%d\n",a,b,c);
return 0;
}