Algo

异或运算

异或运算(exclusive or)又记作XOR,一般用插入符号(caret)^表示,其可以看到是更加单纯的或运算(|)。我们知道,或运算的规则是:

  • a=1,b=1,a|b=1 ①
  • a,b任意一个为1,a|b=1 ②

异或运算则是去除了或运算中的规则①,即只有a、b相异时,结果才为真,其他情形都为假。因此异或运算的真值表为:

0^0 = 0
0^1 = 1
1^0 = 1
1^1 = 0

与0异或,其值不变;与1异或,相当于取反。

异或运算有一些特殊的性质,利用这些性质,可以解决特定的问题。这也是本文所要讨论的重点。

...

同余定理与二进制补码

我们知道,计算机使用2的补码(Two's complements)来表示负数。这样有一个好处:可以使用同一种运算规则来处理正负数的运算,否则,二进制的正数和负数相加,将会得到错误的结果。为了处理这个讹误,必须为负数设计一套“加法器”。关于这一部分的讨论,参照 关于2的补码

而补码使正负数使用同一套“加法器/乘法器”规则,实际上利用了同余运算的性质。

...