首页 > 其他 > 详细

运用异或运算实现两个数不通过中间变量交换值的原理分析

时间:2016-11-14 12:18:31      阅读:189      评论:0      收藏:0      [点我收藏+]

技术分享

或许对于像我现在这样的初学者很多都没见过这个符号 ^

 

这个是个异或运算的符号,好的,我们现在开始分析它的运行原理!

异或运算的知识请点击此连接后了解

http://baike.baidu.com/view/1452266.htm

 

将i和j的初始值给2进制化后

分别为

10 -- 0
5  -- 1
2  -- 0
1

 

10的二进制就为1010

-----------------------------

5 -- 1

2 -- 0

1

 

5的二进制就为 101

第一步:

i=i^j;

好了,我们将2个数都转换成了二进制后

在把他们异或运算下

 

1010

0101             --- 补0

1111             --- 或运算的结果

 再把二进制的1111转换成十进制的

1*2^3+1*2^2+1*2^1+1*2^0

8+4+2+1=15

现在的i的值就等于15了

 

第二步:

j=i^j;

1111

0101

1010             

 再把二进制的1010转换成十进制的

1*2^3+0*2^2+1*2^1+0*2^0

8+0+2+0=10

现在j的值就等于10了

 

第三步:

i=i^j;

1111

1010

0101

现在i的值就等于5了

 

最后就成功的将i和j的值给交换了!

运用异或运算实现两个数不通过中间变量交换值的原理分析

原文:http://www.cnblogs.com/jskbk/p/6060880.html

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