首页 > 代码库 > 运用异或运算实现两个数不通过中间变量交换值的原理分析
运用异或运算实现两个数不通过中间变量交换值的原理分析
或许对于像我现在这样的初学者很多都没见过这个符号 ^
这个是个异或运算的符号,好的,我们现在开始分析它的运行原理!
异或运算的知识请点击此连接后了解
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的值给交换了!
运用异或运算实现两个数不通过中间变量交换值的原理分析
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。