2

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

4

3 回答 3

2

例如 33.1 数字

第一的:

将十进制转换为二进制

33.1 = 100001.0001100110011001100。. .

第二 :

1.000010001100110011001100...*2^5

比 :

唱 = 正面 = 0

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

尾数 = 000010001100110011001100...

SEM =0 1000100 000010001100110011001100 = (33.1)十进制 = (42046666)十六进制

于 2014-10-26T06:40:58.603 回答
2

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

取前 9 位数字

0 00001101

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

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

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

完毕 :-)

于 2011-03-13T19:35:42.610 回答
1

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

   0 00001101 10110011111111011010011
sign exponent significand

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

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

13 - 127 = -114

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

b1.10110011111111011010011 * 2^-114
于 2011-03-13T19:44:51.973 回答