码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2016-11-14 12:20:02      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:src   分享   ima   异或运算   blog   初学者   知识   href   com   

技术分享

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

 

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

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

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的值给交换了!

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

标签:src   分享   ima   异或运算   blog   初学者   知识   href   com   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!