随笔 - 25,  文章 - 0,  评论 - 0,  阅读 - 16970

异或的表示法: 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,交换值(直接交换,不需要临时变量)

  两个变量连续进行三次异或运算,可以互相交换值。

  假设两个变量是xy,各自的值是ab。下面就是xy进行三次异或运算,注释部分是每次运算后两个变量的值。

  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。

 

posted on   迷失中  阅读(417)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示