文章作者:ktyanny 文章来源:ktyanny 转载请注明,谢谢合作。
按位异或运算
俗称:xor运算
1、xor的基本知识
我们来看看xor运算的机理:
1001011001011----àa
xor 1011010001110----àb
-------------------------
0010001000101---àc
看了上面的式子,体会到异或运算的原理了吧,就是:0和1异或0都不变,异或1则取反。很容易理解,如果b中的某位为1,那么a xor b 的作用是在a相应的位进行取反操作。用通俗易懂的语言来讲就是xor运算通常用于对二进制的特定一位进行取反操作。
我们再看到上面那个计算式子,如果得到的结果c再与b做异或运算即:
0010001000101---àc
xor 1011010001110---àb
----------------------------------
1001011001011---àd
注意到了吧,a == d 是成立的!那么我们可以得到一个结论:(a xor b) xor b = a。
同时我们还可以得到一个很诡异的swap操作:
a ^= b; b ^= a; a ^= b;
自己拿起笔来模拟一下就很清楚的了。
2、xor和 not (按位否)操作之间的关系
事实上很简单,nor操作是xor操作的一个特例。取反实质上就是同1做异或操作
~x = x^0x F