a ^ b中的^操作符将a对象与b对象的对应二进制位逐一进行按位异或(xor)运算。当且仅当a与b中的对应二进制位不同时,结果位为1,否则为0。
版权声明
本文可以在互联网上自由转载,但必须:注明出处(作者:海洋饼干叔叔)并包含指向本页面的链接。
本文不可以以纸质出版为目的进行改编、摘抄。
对于单个比特位的^运算,可以总结其规则如下:
1 ^ 1 = 0 | 1 ^ 0 = 1 |
---|---|
0 ^ 1 = 1 | 0 ^ 0 = 0 |
下述程序演示了按位异或操作符^的使用方法。
1 | //Project - BitXor |
上述程序的执行结果为:
1 | a = 10110100 |
请读者结合执行结果的每一位对照检查其与操作数a、b对应位之间的关系。类似地,a ^= b中的^=是个复合操作符,等价于a = a ^ b。
灵活地运用异或运算,也可以达成某些神奇的效果,见下述程序。
1 | //Project - BitXor2 |
如果读者仔细观察执行结果,可以发现:
b的高4位全是1,a^b把a的高4位1010取反,得0101;
b的低4位全是0,a^b的低4位同a的低4位相同,仍为1010。
客观上,上述程序达到了将a的高4位取反,而低4位不变的目的。而哪些位取反,哪些位不变,则由b的二进制值来确定:为1的对应位取反,为0的对应位不变。