异或与逻辑与逻辑或一样是逻辑代数中的一种逻辑运算符,其运算逻辑为两两相同为假,反之,两两不同则为真。

对于命题 其异或操作 计算机中写做 p ^ q 的真值表为:

TrueTrueFalse
TrueFalseTrue
FalseTrueTrue
FalseFalseFalse

异或运算满足如下数学性质:

  • 交换律:
  • 结合律:
  • 恒等律:
  • 归零律:
  • 对合运算:

在计算机中的实际运用中,可以利用异或的性质,快速的交换两个变量的值。

void swap(int *a, int *b) {
    *a ^= *b;
    *b ^= *a;
    *a ^= *b;
}

也可以用来解决特定的算法问题,比如这道Leetcode题目:LC268 丢失的数字

参考