打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
XOR异或计算

1. 异或运算

在数字逻辑中,逻辑算符互斥(exclusive or)是对两个运算元的一种逻辑分析类型,符号为XOR或EOR或⊕。
a⊕b = (¬a ∧ b) ∨ (a ∧¬b)

其真值表如下:

ABA XOR B
000
011
101
110

总结:
如果两个二进制位相同,就返回0,表示false;否则返回1,表示true。
真值结果是无进位的二进制加法得到的结果。

2. 异或运算的特性

  • 交换律:

  • 结合律:

  • 恒等律:

  • 归零律:

  • 自反律:

以上均可根据a⊕b = (¬a ∧ b) ∨ (a ∧¬b)的算法定义进行证明。

3.应用

  • 快速比较两值是否想等

r = a xor bif a==b r == 0else r != 0
  • 检验一个数字中1的个数的奇偶(奇偶校验)
    求10100001中1的个数
    1 ^ 0 ^ 1 ^ 0 ^ 0 ^ 0 ^ 0 ^ 1 = 1
    按位进行异或运算得到的结果等于1,结果为奇数,得到的结果为0,结果为偶数

  • 不使用中间变量,交换两个变量的值

a = a ^ b;b = a ^ b; //a ^ b ^ b = a ^ 0 = a;a = a ^ b;
  • 面试题:一个整型数组里除了一个数字之外,其他的数字都出现了两次,找出这个数字
    对于数组{a, a, b, b, c, c, d},找出只出现了一次的数字d

a^a^b^b^c^c^d= 0 ^ 0 ^ 0 ^d= 0 ^ d= d时间复杂度为O(N), 空间复杂度为O(1)
  • 在密码学中的应用

message XOR key // cipherTextcipherText XOR key // message

明文 XOR 密钥 --> 密文
密文 XOR 密钥 --> 明文
以上特性很好地对应了加密和解密的过程。所以目前很多加密算法都利用了异或算法的这个特性来做最后的密文打乱的工作。

参考资料: 
http://www.ruanyifeng.com/blog/2017/05/xor.html
https://www.lijinma.com/blog/2014/05/29/amazing-xor/
https://zh.wikipedia.org/wiki/%E9%80%BB%E8%BE%91%E5%BC%82%E6%88%96

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
异或运算
同或&&异或
自学WPS表格23:逻辑函数(一)
AND,OR,NOT,XOR,TRUE,FALSE
FreeBASIC学习笔记——第03章 运算符与表达式
位运算 之(2) 按位异或(xor)^ 操作
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服