异或
1 C/C++中异或的运算符号
int c = a ^ b;
2 异或运算结果
下面的0与1都是二进制
0 ^ 0 = 0
0 ^ 1 = 1
1 ^ 0 = 1
1 ^ 1 = 0
即相同为0;不同为1。
3 异或的妙用
任意数与自己异或得0:a⊕a=0;
任意数与0异或得任意数:b⊕0=b;
异或满足交换律与结合律:a⊕b⊕a=b⊕a⊕a=b⊕(a⊕a)=b⊕0=b。
4 用异或和与可以做加法运算
1)两个数先异或得到一个中间值temp1;然后两个数与一下并左移一位得到temp2;
2)判断temp1&temp2 == 0
3)若不等于0,重复1、2
4)否则执行temp1^temp2,得到结果。
参考
只出现一次的数字