一种不需要中间变量交换两个变量内容的方法

来源:本站
导读:目前正在解读《一种不需要中间变量交换两个变量内容的方法》的相关信息,《一种不需要中间变量交换两个变量内容的方法》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《一种不需要中间变量交换两个变量内容的方法》的详细说明。
简介:以前闲聊的时候朋友说有一种方法,不需要中间变量,就可以将两个变量的内容交换。

开始我觉得这方法挺玄乎,不过我并不是不相信没有这样的方法,而是认为可能需要某些特定条件,后来闲暇的时候仔细想了想,发现确实存在这样的方法,大多数单片机的汇编指令都可以实现。

肯定不是有多个寄存器的单片机,比如除了累加器外还有偏移寄存器,实现就非常简单。

LDX a

LDY b

TAX b

TAY a

只要四条汇编指令就可以实现,但这肯定不是我们所说的方法。

来看看真正的代码。

LDA x表示将变量x的内容装入累加器

XOR x表示累加器的内容与变量x的内容进行异或

STA x表示将累加器的内容存进变量x

具体代码,假定是交换a,b两变量,初始内容为a0,b0

累加器内容 a变量内容 b变量内容

LDA a ; a0 a0 b0

XOR b ; a0^b0 a0 b0

STA a ; a0^b0 a0^b0 b0

XOR b ; a0^b0^b0=a0 a0^b0 b0

STA b ; a0 a0^b0 a0

XOR a ; a0^a0^b0=b0 a0^b0 a0

STA a ; b0 b0 a0

嘿嘿,是不是已经实现了交换?

这种方法对于实际应用意义并不大,不过可以加强程序员对逻辑运算的理解,有时候逻辑运算可以发挥一些出人意料的功效,这里利用的就是对于同一个数连续异或两次,原数保持不变。

提醒:《一种不需要中间变量交换两个变量内容的方法》最后刷新时间 2024-03-14 01:01:22,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《一种不需要中间变量交换两个变量内容的方法》该内容的真实性请自行鉴别。