简要介绍:不同则为1,相同则为0 。
注:如果要理解以下内容,要先理解 1 ^ 2 = 3 即 0001 ^ 0010 = 0011;
应用于数值交换,例如:
int temp = i;
i = j;
j = temp;
可以写成异或运算:
i = i ^ j;
j = j ^ i;
i = i ^ j;
或者
i ^= j;
j ^= i;
i ^= j;
看起来花里胡哨的
具体解释
位运算符合以下规律:
1、交换律:a ^ b=b ^ a
2、结合律:(a ^ b) ^ c == a^ (b ^ c)
所以:
第一步, i = i ^ j;
第二步, j = j ^ i,其实就是j = j ^ i ^ j; 通过交换律得 j = 0 ^ i 得到 j = i。
通过以上两步可得:i = i ^ j, 而 j = i。
第三步,i = i ^ j; 其实是 i = (i ^ j )^ i,通过交换律,得到i = j(原始 j 值)。
利用异或运算的一个优点是可以不用额外创建一个新的变量,而且看起来很优雅