面试准备--交换两个数字的几种方法(第五种未验证)

现在一共在网上找到了3种方法 第一种方法最常用,

直接添加一个中间变量

方法2:  使用加减法

这种方法比较容易理解,但是存在一定的问题(int 可能会存在溢出)

第三种方法是使用异或运算进行的

手工运算结果确实是满足需要。 但是具体的原理暂时解释不清。

第四种方法是 乘除法

以上是四种常规的方法。但是我觉得在单片机的底层代码里面可以有其他的解决方案 

我的想法是利用单片机程序的C内嵌汇编代码将 a b 的值分别写入R0 R1 然后分别写回到b a

这种方法区别于计算机程序员的做法  利用了基本的寄存器

或者是

XCH  AX,BX;

总之 在最底层操作上可以很节省资源

第五种方式未经验证 

发布了35 篇原创文章 · 获赞 30 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_41534481/article/details/100523202