关于a和b不用第三变量交换值的问题

2023-06-20,,

今天在如鹏网(不是发广告)上看到一道题,题目很难就不说了,但是老师给的提示的题目却让我感兴趣,就是标题的内容.

题目是把a与b做异或比较从而实现不通过第三变量交换a和b的数值答案是这样的:

a=a^b

b=a^b

a=a^b

我当时看了就一脸懵逼了,异或比较平时比较少用,去百度了一下.

当两个数值在做异或比较的时候是先转换为二进制再比较的,并且相异为真,相同为假.

同时在百度的时候,也有人给出了解答

当第一步a=a^b之后a就成了a与b的异或后的值

第二步b=a^b=a^b^b相当于这样,又因为相同为假所以b=a

第三步a=a^b^a=b同理.所以就可以不通过第三者就可以传递变量了.

我们用具体的值带入算看看

设a=2,b=5

a=a^b=010^101=111

b=a^b=111^101=010=2

a=a^b=111^010=101=5

结果完全一样.

其中网上也有另一种通过加减的方法来交换值的

a=a+b

b=a-b

a=a-b

关于a和b不用第三变量交换值的问题的相关教程结束。

《关于a和b不用第三变量交换值的问题.doc》

下载本文的Word格式文档,以方便收藏与打印。