CPU的按位异或

异或操作可以理解为一个半加法器,加法器是根据两个输入获取一个输出,输出分为结果位和进位:
结果位运算规则为:相同输出0,不同输出1,这也是异或的运算规律。
进位运算规则就是按位与:两个都为1时才为1,其他为0.
异或的使用场景:
1、交换两个变量,不需要临时变量
a = a ^ b;
b = b ^ a;
a = a ^ b;
2、快速判断两个数字是否相等
(a ^ b) == 0
3、加密解密,一个数a异或密钥b,再用结果c异或密钥b就又得到a
c = a ^ b
d = c ^ b
此时 a == d
原理:
(a ^ b) ^ b
= a ^ (b ^ b) //异或运算的结合性
= a ^ 0 //任何一个数和自身异或等于0
= a //任何数和0异或等于该数

3、文件备份(数据备份)
假定有两个文件 a b,根据a b异或得出c文件,此时只要a和b不是同时损坏,就可以根据c得到任意一个a或b文件:
c = a ^ b
b = a ^ c(a ^ (a ^ b) = a ^ a ^ b = 0 ^ b = b)

上面几个应用都是基于异或运算的一个特性:结合性
x ^ (y ^ z) = (x ^ y )^ z

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值