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

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

技术分享

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

 

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

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

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

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