異或就是只有一個為真,才為真。數學符號是 '⊕' ,計算機符號是'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,給定一個非空整數數組,除了某個元素只出現一次外,其余每個元素均出現兩次,只要把整個數組中的數依次做異或運算,就能夠找到只出現了一次的元素了。