我需要将二进制数 0000 0110 1101 1001 1111 1110 1101 0011 转换为 IEEE 浮点数。答案是 1.10110011111111011010011 x 2^−114,但是指数是如何得出的呢?
3 回答
例如 33.1 数字
第一的:
将十进制转换为二进制
33.1 = 100001.0001100110011001100。. .
第二 :
1.000010001100110011001100...*2^5
比 :
唱 = 正面 = 0
指数 = 5 + 127 = 132 = (1000100)
尾数 = 000010001100110011001100...
SEM =0 1000100 000010001100110011001100 = (33.1)十进制 = (42046666)十六进制
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?
IEEE-754 数字的指数存储在有偏差的表示中,这意味着将一个固定值添加到真实指数以获得存储在编码中的值。对于单精度(32 位),偏差为 127。为了从编码中获得指数,我们需要减去这个偏差:
13 - 127 = -114
不存储有效数字的单位位(除非指数字段为零,否则它隐含为 1),因此我们将该位插入有效数字,并获得您列出的值:
b1.10110011111111011010011 * 2^-114