运用异或运算实现两个数不通过中间变量交换值的原理分析
Posted 风起,唯有努力生存
tags:
篇首语:本文由小常识网(cha138.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的值给交换了!
以上是关于运用异或运算实现两个数不通过中间变量交换值的原理分析的主要内容,如果未能解决你的问题,请参考以下文章