異或是什么意思?( 二 )


其次,對于任何數x,都有x^x=0,x^0=x 。
所以1^2^. 。.^n^. 。.^n^. 。.^1000 = 1^2^. 。.^1000^(n^n)= 1^2^. 。.^1000^0 = 1^2^. 。.^1000(即序列中除了n的所有數的異或) 。
令,1^2^. 。.^1000(序列中不包含n)的結果為T
則1^2^. 。.^1000(序列中包含n)的結果就是T^n 。
T^(T^n)=n 。
所以,將所有的數全部異或,得到的結果與1^2^3^. 。.^1000的結果進行異或,得到的結果就是重復數 。
當然有人會說,1+2+. 。.+1000的結果有高斯定律可以快速計算,但實際上1^2^. 。.^1000的結果也是有規律的,算法比高斯定律還該簡單的多 。
google面試題的變形:一個數組存放若干整數,一個數出現奇數次,其余數均出現偶數次,找出這個出現奇數次的數?
解法有很多,但是最好的和上面一樣,就是把所有數異或,最后結構就是要找的,原理同上
異或 :二進制運算法則,規則是 "相同為0,相異為1" 或者邏輯上是 "同真為假,同假為真" 例如: 二進制數11和01進行異或運算結果是10 。應用: 電路硬件中可以做異或門,是一種電路開關 。應用很廣 。

推薦閱讀