首页 文章

从二进制转换为IEEE浮点

提问于
浏览
2

我需要将二进制数0000 0110 1101 1001 1111 1110 1101 0011转换为IEEE浮点数 . 答案是1.10110011111111011010011 x 2 ^ -114,但指数是如何得出的?

3 回答

  • 1

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

    取前9位数字

    0 00001101
    

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

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

    (并且分数部分缺少1,它是隐含的)

    完成:-)

  • 1

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

    0 00001101 10110011111111011010011
    sign exponent significand
    

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

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

    13 - 127 = -114
    

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

    b1.10110011111111011010011 * 2^-114
    
  • 2

    例如33.1号码

    第一:

    将十进制转换为二进制

    33.1 = 100001.0001100110011001100 . . .

    第二个:

    1.000010001100110011001100 ... * 2 ^ 5

    比:

    Sing = positive = 0

    指数= 5 127 = 132 =(1000100)

    尾数= 000010001100110011001100 ...

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

相关问题