如何将a,b的值进行交换,并且不使用任何中间变量

来源:互联网 发布:天池竞赛用什么算法 编辑:程序博客网 时间:2024/06/05 04:03

解析:

简而言之,用异或语句比较容易,而且不用担心越界的问题。

如果采用:

a=a+b;b=a-b;a=a-b;

这样做的缺点是如果a,b都是一个比较大的数,那么相加可能会超界

采用:

a=a^b;b=a^b;a=a^b;
无需担心超界问题。

原理是按位异或运算

如果

a=00001001

b=00000101

那么

00001001(a)^00000101(b)=00001100(a);

00001100(a)^00000101(b)=00001001(b);此时b已经交换成a的值

00001100(a)^00001001(b)=00000101(a);a变成b的值