zoukankan      html  css  js  c++  java
  • 运用异或运算实现两个数不通过中间变量交换值的原理分析

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

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

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

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

  • 相关阅读:
    备份
    Ibatis_dataMapper
    查询成绩都大于80分的学生
    删除文件的工具
    从运行中启动收索引擎
    数据库Northwind
    搭建Android开发环境
    数据库知识结构
    数据库MedicineMis_STD
    数据库work
  • 原文地址:https://www.cnblogs.com/jskbk/p/6060880.html
Copyright © 2011-2022 走看看