1.若a ^ b = c; 则有a ^ c = b, b ^ c = a;
例:将两个整形变量交换(不创建临时变量)
这里就可以用到上面得到的规律来写,在写代码之前先给上面的规律附上具体值来验证一下:
10的二进制 01010
20的二进制 10100
01010 11110 11110
^ 10100 ^ 10100 ^ 01010
11110 01010 10100
#include<stdio.h>
int main()
{
int a = 10;
int b = 20;
a = a ^ b;
b = a ^ b;
a = a ^ b;
printf("%d %d", a, b);
return 0;
}
如上代码就是通过异或^将两个整形变量交换的实例;
2. 连续异或:对应位上1的个数为偶数个时,最终结果对应位为0;为奇数个时,最终结果对应位为1。
例:一组数据中只有一个数字出现了一次,其他所有数字都是成对出现的,请找出这个数字。
分析问题