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

一般我们在编程时要实现两个变量值的交换,都会借助于一个临时变量

 

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

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

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

 

 

 

posted @ 2012-11-19 09:47  枫部落  阅读(2551)  评论(0编辑  收藏  举报
点击这里给我发消息