您的位置:首页 > 其它

用异或运算符实现不用第三个临时变量交换两个变量的值

2012-11-19 09:47 597 查看
一般我们在编程时要实现两个变量值的交换,都会借助于一个临时变量

但有没有一种方法可以不要临时变量呢?

我们先熟悉一下异或运算法则:

1. a ^ a = 0

2. a ^ b = b ^ a

3. a ^ b ^ c = a ^ (b ^ c) = (a ^ b) ^ c;

4. d = a ^ b ^ c 可以推出 a = d ^ b ^ c.

5. a ^ b ^ a = b.

现在编程实现不要临时变量实现两个变量 m,n的交换。

m = m^n;

n = m^n;

m = m^n;

结束。

看不明白?或者怀疑有没有这么简单?

由异或运算法则可以知道:

m = m^n^n;

n = n^m^m;

上个例子中,

第二句 n = m^n,扩展开来就是:n = (m^n)^n,右边式子等于m;

第三句 m = m^n,扩展开来就是:m = (m^n)^m(本来是n,但是上一句中,n=m了),右边式子等于n;

异或运算还是神奇!

这有一篇博文探讨了用异或交换多个变量值的方法,当然也是不用临时变量了。

http://blog.csdn.net/lpt19832003/article/details/5334688
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: