异或运算是其本身的逆运算,即对于任何两个布尔变量或者数有(a xor b) xor b=a。故而有下面的交换方式:
void swap(int a,int b)
{
a=a^b;
b=a^b;
a=a^b;
}
补充,异或运算的简单性质:
1. a ⊕ a = 0
2. a ⊕ b = b ⊕ a
3. a ⊕b ⊕ c = a ⊕ (b ⊕ c) = (a ⊕ b) ⊕ c;
4. d = a ⊕ b ⊕ c 可以推出 a = d ⊕ b ⊕ c.
5. a ⊕ b ⊕ a = b.
6.若x是二进制数0101,y是二进制数1011
则x⊕y=1110
只有在两个比较的位不同时其结果是1,否则结果为0
即“相同为0,不同为1”!