• 二进制运算


    (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.

  • 相关阅读:
    Android数据存储
    linux中uptime命令查看linux系统负载
    Linux系统中的load average
    Trie树(c++实现)
    模版
    重载操作符[]
    stanford-postagger中文词性标注
    数值的整数次方(剑指offer面试题11)
    __init__ 和 self
    python中文分词:结巴分词
  • 原文地址:https://www.cnblogs.com/pureayu/p/13960989.html
Copyright © 2020-2023  润新知