Skip to content
文档章节

异或

异或(XOR) 真值表如下,可以看到 0 和 1 异或 为 1, 相同数据异或为 0

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

运算

  1. 任何数据与 自身异或 为 0
  2. 任何数据与 0 异或 为 自身数据
  3. 交换律
  4. 结合律
js
x ^ x = 0
x ^ 0 = x
x ^ y = y ^ x
x ^ (y ^ z) = (x ^ y) ^ z

应用

加密数据

js
text ^ key = chipText

chipText ^ key = text

text ^ key ^ key = text ^ (key ^ key) = text ^ 0 = text

查找不同

数组中有 n 个数据,只有一个是没有重复的,找出那个数据

js
a[0] ^ a[1] ^ a[2] ^ ... a[n-1] = a[p], 其中其他重复数据异或都为0,得到唯一没有重复的值

参考

  1. 阮一峰
  2. That XOR Trick