XOR(逻辑异或)运算的特性:
对于 a, a, b 这种 一组数中只有一个数是奇数个时,满足:
XOR运算具有交换律:
a ^ a ^ b = a ^ b ^ a = b ^ a ^ a = b;
//最后结果为个数为奇数次的数
XOR运算具有结合律:
a ^ b ^ a = a ^ (b ^ a) = b;
//最后结果为个数为奇数次的数
将某一位设为0或1
int a|=(1<<x) //X就是某位需要置1的数字,如第四位置1为: a|=(1<<4)
int b&=~(1<<x) //把某位置设为0
实际运用:
寻找“单身狗”
普遍的,在XOR运算中 :
1、a ^ a = 0
2、0 ^ a = a
3、a = a ^ b; b = a ^ b; a = a ^ b; 这样可以实现两数的交换