如何在手上将半精度二进制转换为十进制?

时间:2017-10-04 23:20:00

标签: floating-point ieee-754

例如,

1 10000 0000000000 = −2

但为什么呢?有人可以用一些例子解释一下吗?

1 个答案:

答案 0 :(得分:0)

分解:

+------------------- Sign
| +---+------------- Biased exponent
| |   | +--------+-- Fractional part of the significant 
1 10000 0000000000 = −2

由于偏向指数字段既不是0也不是最大值,这是正常数字,其中隐含1.表示重要且有偏见指数

significant = 1.Fractional_part_of_the_significant

使用binary16Exponent bias为15。

exponent = Biased_exponent - Exponent_bias;

将此与1 10000 0000000000**暗示取幂)

放在一起
value = (-1)**sign * 1.Fractional * 2**(Biased_exponent - Exponent_bias)
value = -1 * 1.0000000000(binary) * 2**(10000(binary) - 15)
value = -1 * 1.0 * 2**(16 - 15)
value = -2