1.异或运算公式.
交换律: a ^ b = b ^ a
结合律: a ^ b ^ c = ( a ^ b ) ^ c = a ^ ( b ^ c)
a ^ a = 0, 0 ^ a = a
自反性: a ^ b ^ a = b
d = a ^ b ^ c 可以得出 a = d ^ b ^ c
2.可以利用异或解决的事
交换两个数
交换两个数a,b可以有多种方式: 借助临时变量,如果不是用额外的变量可以做加减.
a = a + b;
b = a - b;
a = a - b;
或者做异或:
a = a ^ b;
b = a ^ b;( b = a ^ b ^ b 即 b = a)
a = a ^ b;
选择不成对的某个数.
先看一个例子:
题目描述:给定2n + 1个数,除了有一个数字外,其他数字都出现2遍,求这个数.
这个现在做起来比较简单了 这些数直接异或的结果就是那个数.
两个相同的数异或为0,所以有n个0和那个数的异或,最终结果就是那个数本身