【问题标题】:Converting from binary to IEEE floating-point从二进制转换为 IEEE 浮点
【发布时间】:2011-03-13 19:19:24
【问题描述】:

我需要将二进制数 0000 0110 1101 1001 1111 1110 1101 0011 转换为 IEEE 浮点数。答案是1.10110011111111011010011 x 2^−114,但是指数是怎么推导出来的呢?

【问题讨论】:

    标签: binary floating-point ieee-754 exponent


    【解决方案1】:

    http://en.wikipedia.org/wiki/Single_precision_floating-point_format

    取前 9 位数字

    0 00001101
    

    第一个是符号(0 ==正)

    接下来的 8 位是指数,转换为十进制 == 13。IEEE 32 二进制浮点数中的符号偏移 127,因此 13 - 127 = -114。

    (小数部分缺少 1,这是隐含的)

    完成:-)

    【讨论】:

      【解决方案2】:

      例如 33.1 数字

      第一:

      十进制转二进制

      33.1 = 100001.0001100110011001100 。 . .

      秒:

      1.000010001100110011001100...*2^5

      比:

      唱 = 积极 = 0

      指数 = 5 + 127 = 132 = (1000100)

      尾数 = 000010001100110011001100...

      S E M =0 1000100 000010001100110011001100 = (33.1)十进制 = (42046666)十六进制

      【讨论】:

        【解决方案3】:

        让我们将数字的表示分解为 IEEE-754 浮点值的组成部分:

           0 00001101 10110011111111011010011
        sign exponent significand
        

        指数字段是b00001101,即13。我们如何从那里得到-114?

        IEEE-754 数字的指数以 有偏 表示形式存储,这意味着将一个固定值添加到真正的指数中以获得存储在编码中的值。对于单精度(32 位),偏差为 127。要从编码中获得指数,我们需要减去此偏差:

        13 - 127 = -114
        

        不存储有效数字的单位位(除非指数字段为零,否则它隐含为 1),因此我们将该位插入有效数字,并获得您列出的值:

        b1.10110011111111011010011 * 2^-114
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-04-02
          • 1970-01-01
          • 2017-03-29
          • 1970-01-01
          • 1970-01-01
          • 2018-10-17
          • 1970-01-01
          相关资源
          最近更新 更多