异或是什么意思?( 二 )


其次,对于任何数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 。应用: 电路硬件中可以做异或门,是一种电路开关 。应用很广 。

推荐阅读