Chinaunix首页 | 论坛 | 博客
  • 博客访问: 116064
  • 博文数量: 43
  • 博客积分: 1935
  • 博客等级: 上尉
  • 技术积分: 461
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-10 10:13
文章分类

全部博文(43)

文章存档

2008年(11)

2007年(1)

2006年(31)

我的朋友

分类:

2006-07-26 10:12:38

以前在程序中交换两个变量的值都要使用一个中间变量进行过渡,今天师弟让我看了一本关于游戏编程方面的书,书上提到了如何不使用中间变量来进行交换的思想,令不禁为数理大牛们的逻辑思维表示深深地佩服。

现在将这种思想写出来,供大家参考:
设变量为A和B;
交换A和B的值,只需做以下三步就OK;
1)A=A异或B;2)B=B异或A;3)A=A异或B。

如果你对此表示怀疑,那么我用下面的例子将你的疑惑去除!
设A=5,B=7,即用二进制表示为A=0101,B=0111;
第一次异或:A=0101异或0111=0010;
第二次异或:B=0111异或0010=0101=5,B即为A的初值5;
第三次异或:A=0010异或0101=0111=7,A即为B的初值7;

最后,我们可以看到A的值为7,B的值为5,正是我们所要的结果!

阅读(938) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~