异或就是只有一个为真,才为真。数学符号是 '⊕' ,计算机符号是'xor',在编程语言中一般用'^'表示,运算法则如下:
1^0=1
1^1=0
0^0=0
可见,异或可以实现按位翻转。例如101^111=010,用十进制表达就是5^7=2。异或运算满足的法则包括:
1.归零律,任何数异或自己相当于把自己置零,a^a=0
2.恒等律,任何数异或0都等于自己,a^0=a
3.交换律,a^b=b^a
4.结合律,(a^b)^c=a^(b^c)
5.自反,a^b^a=b
6.d=a^b^c => a=d^b^c
除了按位翻转外,异或的主要应用还包括:
1.无需使用临时变量的实现两个值的交换
a=a^b
b=a^b
a=a^b
2.寻找数组中不重复的数
例如leetcode 136,给定一个非空整数数组,除了某个元素只出现一次外,其余每个元素均出现两次,只要把整个数组中的数依次做异或运算,就能够找到只出现了一次的元素了。