我需要将二进制数0000 0110 1101 1001 1111 1110 1101 0011转换为IEEE浮点数 . 答案是1.10110011111111011010011 x 2 ^ -114,但指数是如何得出的?
http://en.wikipedia.org/wiki/Single_precision_floating-point_format
取前9位数字
0 00001101
第一个是符号(0 ==正)
接下来的8是指数,转换为十进制== 13. IEEE 32二进制浮点数中的符号偏移127,因此13 - 127 = -114 .
(并且分数部分缺少1,它是隐含的)
完成:-)
让我们将您的数字表示分解为IEEE-754浮点值的组成部分:
0 00001101 10110011111111011010011 sign exponent significand
指数字段是 b00001101 ,即13.我们如何从那里到-114?
b00001101
IEEE-754数字的指数存储在偏差表示中,这意味着将固定值添加到真指数以获得存储在编码中的值 . 对于单(32位)精度,偏差为127.要从编码中获得指数,我们需要减去这种偏差:
13 - 127 = -114
未存储有效数字的单位位(除非指数字段为零,否则隐含为1),因此我们将该位插入有效数字,并获得您列出的值:
b1.10110011111111011010011 * 2^-114
例如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)十六进制
3 回答
http://en.wikipedia.org/wiki/Single_precision_floating-point_format
取前9位数字
第一个是符号(0 ==正)
接下来的8是指数,转换为十进制== 13. IEEE 32二进制浮点数中的符号偏移127,因此13 - 127 = -114 .
(并且分数部分缺少1,它是隐含的)
完成:-)
让我们将您的数字表示分解为IEEE-754浮点值的组成部分:
指数字段是
b00001101
,即13.我们如何从那里到-114?IEEE-754数字的指数存储在偏差表示中,这意味着将固定值添加到真指数以获得存储在编码中的值 . 对于单(32位)精度,偏差为127.要从编码中获得指数,我们需要减去这种偏差:
未存储有效数字的单位位(除非指数字段为零,否则隐含为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)十六进制