异或的表示法: 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。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?