异或的表示法: xor,^, ⨁
异或的含义: 最纯粹的或的定义,即只有异才为或,2个数不同才为true。
异或的规律:
1,值与自身的运算,总是为 false。
X ^ X = 0
2,值与 0 的运算,总是等于其本身。
X ^ 0 = X
3,交换性
X ^ Y = Y ^ X
4,整合性
X ^ (Y ^ Z) = (X ^ Y) ^ Z
异或的应用:
1,简化计算
a ^ b ^ c ^ a ^ b
= a ^ a ^ b ^ b ^ c
= 0 ^ 0 ^ c
= c
2,交换值(直接交换,不需要临时变量)
两个变量连续进行三次异或运算,可以互相交换值。
假设两个变量是x和y,各自的值是a和b。下面就是x和y进行三次异或运算,注释部分是每次运算后两个变量的值。
x = x ^ y // (a ^ b, b)
y = x ^ y // (a ^ b, a ^ b ^ b) => (a ^ b, a)
x = x ^ y // (a ^ b ^ a, a) => (b, a)
两个变量交换值的最快方法,不需要任何额外的空间。
3,加密
第一步,明文(text)与密钥(key)进行异或运算,可以得到密文(cipherText)。
text ^ key = cipherText
第二步,密文与密钥再次进行异或运算,就可以还原成明文。
cipherText ^ key = text
原理:如果明文是 x,密钥是 y,那么 x 连续与 y 进行两次异或运算,得到自身。
(x ^ y) ^ y
= x ^ (y ^ y)
= x ^ 0
= x
4,备份
异或运算可以用于数据备份。
文件 x 和文件 y 进行异或运算,产生一个备份文件 z。
x ^ y = z
以后,无论是文件 x 或文件 y 损坏,只要不是两个原始文件同时损坏,就能根据另一个文件和备份文件,进行还原。
x ^ z
= x ^ (x ^ y)
= (x ^ x) ^ y
= 0 ^ y
= y
上面的例子是 y 损坏,x 和 z 进行异或运算,就能得到 y。
浙公网安备 33010602011771号