zoukankan      html  css  js  c++  java
  • 二进制运算

    (LSS同学请看)

    假设N = 11.0101

    (一切运算都是二进制表示)

    其实N = 11.0101 * 1 -> N = 11.0101 * 20

    设红色数字为A,蓝色数字为B(博客上不能标颜色,A是左边长的一串,B是右边2的多少次方那一串)

     

    那么如果假设此时A是 1.10101,就代表这个数字串左移了一位,(因为这是二进制)那么也就是进行了除2操作。为了与原来的N相等,那么B就要多乘一个2,然后这个多乘的2就变成B的指数部分加上1,例如20 * 2 = 21, 21 * 2 = 210,注意这一处,不是22,因为这是二进制,所以要将十进制数字变成二进制数字。

    所以对于书上的11.0101(此处乘20也就是1被省略) = 0.110101 * 210,也就是先将A左移了两位(也就是除以4,即22),所以右边的B就要乘以4,也就是二进制加1再加1,即:

    20 * 2 * 2 = 21 + 1 = 210

     

    同理如果0.110101*210 变成了 1.10101 * 21,那么就是A右移了一位(即乘2),所以为了保持相等,B就要除以一个2(也就是指数减去一个1),变成了21

     

    同理,对于1.10101 * 21 变成1101.01*2-10,也就是A右移了3位(乘8,即23),所以右边B的指数就要减去3,也就是21指数减去3就是2-2,也就是2-10.

  • 相关阅读:
    Kafka架构
    MapReduce执行流程解析
    ZooKeeper选举机制
    Zookeeper全局一致性
    HDFS的快照
    在CentOS 6.5上安装NodeJS
    Node v0.12.5 稳定版发布
    CentOS6.5手动升级gcc4.8.2
    centos6 yum 安装 install c++4.8 gcc4.8
    Linux CentOS6系统安装最新版本Node.js环境及相关文件配置
  • 原文地址:https://www.cnblogs.com/pureayu/p/13960989.html
Copyright © 2011-2022 走看看