1.两个数的交换

利用异或运算可以实习一种简单的不使用第三个数的交换方式, 代码如下所示:

  1. void swap(int a,int b)
  2. {
  3. a = a^b;
  4. b = a^b;
  5. a = a^b;
  6. }

原因是:异或运算是它本身的逆运算,故对于两个数或是布尔变量有如下性质:

  1. (a XOR b) XOR b = a

补充,异或运算的简单性质:
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”.
由上述这些性质我们可以得到异或运算的第二个应用————判断两个数是否相等。

2.判断两个数是否相等

https://www.cnblogs.com/cherryljr/p/7056980.html?utm_source=itdadao&utm_medium=referral

3.位数的奇偶判断

^a操作就是将a中的每一位按位逐一进行异或。例如a = 1010,则^a = 1^0^1^0=0,由此可以判断a中为1的位数是奇数还是偶数,是一个便捷的操作。