异或运算的巧用→不用额外的变量,如何交换两个变量的值?

本文介绍了异或运算的概念和运算定律,通过具体的案例展示了如何利用异或运算在不需要额外变量的情况下交换两个变量的值,以及在解决寻找一串数字中唯一奇数次出现的数字、缺失数字和重复数字等问题中的应用。强调了异或运算是判断同位上值不同的依据,并指出其在某些场景下优于传统方法的优势。

开心一刻

  两头奶牛在一起吃草,其中一头(奶牛甲)越吃越慢,一副若有所思的模样,另一头奶牛(奶牛乙)发觉了,开始了对话

  奶牛乙:搁那合计啥呢?

  奶牛甲:你帮我合计合计

  奶牛乙:咋地了

  奶牛甲:我吃的是草,挤出来的是奶,也就是说我把没用的变成有用的了

  奶牛乙:是这个事

  奶牛甲:人呢,喝的是奶,拉出来的是粑粑

  奶牛乙:咋地了

  奶牛甲:他又把有用的变成没用的了,我这不白干了吗

  奶牛乙:你说的不对

  奶牛甲:不对吗?

  奶牛乙:那粑粑做成化肥,有化肥才能长草,所以说你吃的不是草,是粑粑

  奶牛乙:啊 ???

概念

  关于“位”运算,大家或多或少都知道点,比如与运算(&)、或运算(|)、异或运算(^)、取反运算(~)、左移(<<)、右移(>>)

  因为今天的主角是:异或运算,其他的位运算就不在本文展开了,大家自行去查阅

  异或运算的英文名: exclusive OR ,简称 XOR ,那它是不是和或运算有什么关系?

  关于或运算,我们都比较清楚,只有当两个位都是0时,结果才为0,其他情况结果都是1,也就是说或运算结果为 1 的情况两种

  (1)一个位是 1,另一个位是 0

  (2)两个位都是 1

  有时候我们需要明确区分这两种情况,怎么办?

  所以引入了 XOR ,它排除了情况(2),只有情况(1),也就说:一个位是 1,另一个位是 0 时, XOR 的结果才是 1,因此也可称做无进位相加

  所以  XOR 可以看成是更单纯的 OR 运算,正好对应了它的英文名: exclusive OR ,用来判断两个值是否不同(不同、不同、不同!!!)

   XOR 的运算真值表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值