您的位置:首页 > 其它

不用第三方变量如何交换两个数的值

2017-04-23 19:59 387 查看
          如果要交换两个变量的值,我们首先想到的就是定义一个第三方变量暂存其中一个变量的值:

        


         如果我们不使用第三方变量怎么交换两个变量的值呢?

         1.利用两数之和减去另一个数的方式:

        


         这样也能成功交换两个数的值,但这种方法,如果两个数很大,可能会超出类型范围,造成数据丢失精度。所以不常用。

         2.利用位运算 ^ (异或):

             异或的特点是:一个数据a与另一个数据b做异或运算之后,变成了另外一个数c,再读取这个数据就不是原来的数据了,我们如果再拿这个数据c和数据b异或一次,这个数据又变回原来的数据a。

             即:a^b^b=a;   a^b^a=b

             所以我们可以利用这个特点交换两个数据:

         


         异或运算不会产生进位,所以不会造成数据损失,并且异或运算是二进制之间的运算,效率也比较高,但是这种交换方式阅读性差。所以还是定义第三方变量比较常用

        
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  交换两个数的值