首页 > 其他 > 详细

不借助第三个变量交换两个变量值的方法

时间:2014-03-05 00:59:25      阅读:553      评论:0      收藏:0      [点我收藏+]

1)使用加法

a = a + b

b = a - b

a = a - b

2)使用异或运算

a = a ^ b

此时, a的位模式指示了a,b在那些位上是相同的(为0的那些位), 哪些位上是不同的(为1的那些). 而我们仍持有b的值, 所以a,b的值我们都还是知道的.

b = a ^ b

因为: 0不论和什么值异或, 结果都是那个值; 1不论和什么值异或, 其值都是那个值取反. 上一步后, a已经指示了a,b每个位的差异, 所以, 这一步是保留b中和1一样的位(这些位在现在的a中是0), 而将和a不同的位取反(这些位在现在的a中是1). 这步过后, b就被赋予原来a的值.

a = a ^ b

同理, 上一步后b已经是最开始时a的值, a仍然是指示a,b位差异的, 所以它们异或, 就得到了原来b的值.

不借助第三个变量交换两个变量值的方法,布布扣,bubuko.com

不借助第三个变量交换两个变量值的方法

原文:http://www.cnblogs.com/toowhite/p/3580220.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!