从二进制转换为IEEE浮点

时间:2011-03-13 19:19:25

标签: binary floating-point ieee-754 exponent

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

3 个答案:

答案 0 :(得分:2)

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

取前9位

0 00001101

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

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

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

完成: - )

答案 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 :(得分:1)

例如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)十六进制