2019年11月6日 / 192次阅读 / Last Modified 2019年11月6日
代码界一直流传着使用三个异或的方式来交换两个变量的数值,既然我们已经学习了python的位运算,那就来试试这种酷酷的操作吧。
>>> a = 2
>>> b = 5
>>> a = a^b
>>> b = a^b
>>> a = a^b
>>> print(a,b)
5 2
成功!下面来分析一下这三个异或操作是如何实现数值交换的。
首先我们需要了解一个知识点:一个数自己与自己异或,结果位0:
>>> 12 ^ 12
0
>>> -12 ^ -12
0
因此,我们给上面那段代码加点注释:
>>> a = a^b
>>> b = a^b # b = a^b^b = a which is the orginal value of a
>>> a = a^b # a = a^a^b = b which is the orginal value of b
看明白了没?
我们可以使用分号,将这三行代码并入一行;我们还可以使用python独有的交换数值的方法,代码如下:
>>> a ^= b; b ^=a; a ^= b; # swap by xor
>>> a,b = b,a # swap again directly in python
交换连个变量的值数,在python中,就是如此简单。
-- EOF --
本文链接:https://www.pynote.net/archives/1464
《用异或实现数值交换》有2条留言
前一篇:python独有的交换算法
后一篇:tkinter响应窗口关闭事件
©Copyright 麦新杰 Since 2019 Python笔记
【加密解密】这种异或的特性,其实还可以作为一个简单的堆成加密算法。发送端随机生成一个数字,与原文异或,得到密文;接收端再用此数字(不考虑如何传递此数字的问题)与密文再做一次异或,得到原文。 [ ]
异或特性:任意数和自身异或结果为0;0和任意数异或结果还是其本身。 [ ]