我需要将二进制数0000 0110 1101 1001 1111 1110 1101 0011转换为IEEE浮点数。答案是1.10110011111111011010011 x 2 ^ -114,但指数如何得出?
答案 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)十六进制