深色模式
异或
异或(XOR) 真值表如下,可以看到 0 和 1 异或 为 1, 相同数据异或为 0
js
0 ^ 0 = 0
1 ^ 1 = 0
0 ^ 1 = 1
1 ^ 0 = 1
运算
- 任何数据与 自身异或 为 0
- 任何数据与 0 异或 为 自身数据
- 交换律
- 结合律
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,得到唯一没有重复的值