交换两个变量几乎是编码初学者必定会遇到的问题,但是交换两个变量也可以充满趣味。方法多种多样,今天说个最高效,最安全的方法。

交换两个变量值

不优雅的写法

通常我们交换两个变量的值需要介入第三个变量,以Python来举例:

优雅的写法

使用异或运算,安全、高效、简单的交换两个变量的值:

WTF?什么原理? 听我娓娓道来。

手动异或运算复现上述过程

什么是异或运算?

定义:称为按位异或运算符。它对整型参数的每一个二进制位进行布尔异或操作,即两个对应的二进制位,有且仅有一个为1时,才等于1。

位运算举例

1.用bin方法算出6和9的二进制值,如下:

其中0b开头表示二进制数

2.a = a ^ b
也即用异或计算两个值0110,1001

此时 a = '0b1111'

3.b = a ^ b
也即用异或计算两个值1111,1001

此时的结果0110是b的值,不难发现,这个值等于6

4.a = a ^ b
也即用异或计算两个值1111,0110

OK,此时a的值为 1001 也即是十进制的9。

到此,两个数字就交换完成了,是不是很简单呢。

标签: none

分类: 所有文章

添加新评论