XOR

异或是一个数学运算符,用于逻辑运算.异或的数学符号为“⊕”,计算机符号为“xor”。运算规则为:

1^0=1
1^1=0
0^1=1
0^0=0

即:相同取0,相异取1.在判断真(1)假(0)时:仅有一个为真(1)时才为真(1).

异或的用途

1.在不必使用第三个值(中间变量)的时候,交换两个整数的值
1
2
3
4
5
var a = 1;
var b = 2;
a = a ^ b;
b = b ^ a;
a = a ^ b;//a = 2;b = 1;
2.奇偶判断

题目:一个数组存放若干整数,一个数出现奇数次,其余数均出现偶数次,找出这个出现奇数次的数?

解法:把所有数异或,偶数次异或为0,奇数次异或为数本身.

变形题目:1-1000放在含有1001个元素的数组中,只有唯一的一个元素值重复,其它均只出现一次。每个数组元素只能访问一次,设计一个算法,将它找出来;不用辅助存储空间,能否设计一个算法实现?

解法:把所有数异或后的结果与1-1000异或后的结果异或,得到结果.

3.内存保护作用