交换两个数的位置,不引入新参数--求异详解

交换两个数的位置,不引入新参数–求异详解

交换两个数的位置,不导入新参数,目前常见的有三种办法:

​ 1.引入新变量;

​ 2.通过加减法;

​ 3.异或;

前面两种都很好理解,关于异或往往只会会注释一句对一个值连续异或,结果还是他本身,今天就通过简单计算让大家进一步了解异或;

首先,讲一下概念,异或(xor)是一个数学运算符。它应用于逻辑运算。异或也叫半加运算,其运算法则相当于不带进位的二进制加法:二进制下用1表示真,0表示假,则异或的运算法则为:0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0(同为0,异为1),这些法则与加法是相同的,只是不带进位,所以异或常被认作不进位加法。用通俗点的话说就是,两个值不同为真,两个值相同为假;

下面,我们取两个数进行简单的示例;

​ 我们取3 ,二进制位0011,和4 ,二进制为0100;

​ 0 0 1 1****3

^0 1 0 0****4


​ 0 1 1 1****7

结果为0111,换成十进制结果为7,那么一定会有人认为这就是加法。我们把刚才得到的值继续处理;

​ 0 1 1 1****7

^0 1 0 0****4


​ 0 0 1 1****3

结果有变回了0011也就是3,即3 ^ 4 ^ 4=3.
所以我们通过 x=x^ y ; y=x^ y; x=x^ y;即可以交换两个参数的位置了。
不知道大家看完这边文章,对异或有没有更深一步的了解呢~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值