【发布时间】:2017-02-18 17:57:51
【问题描述】:
假设我有这样的浮点位表示:
0 0000000000 00000000000000000000000000000000000000000000000000001
我知道指数全为零的浮点数称为次正规数或非正规数。并且指数的计算方式与考虑偏差的普通浮点数不同。
那么如何计算次正规的指数呢?
【问题讨论】:
标签: binary floating-point
假设我有这样的浮点位表示:
0 0000000000 00000000000000000000000000000000000000000000000000001
我知道指数全为零的浮点数称为次正规数或非正规数。并且指数的计算方式与考虑偏差的普通浮点数不同。
那么如何计算次正规的指数呢?
【问题讨论】:
标签: binary floating-point
指数的计算方式没有不同。次正规的唯一区别是前导 0 而不是前导 1(因此您的示例等于 0.0000···0001 * 2^-1022 而不是 1.0000···0001 * 2^-1022。
如果您正在寻找一个等价的尾数和指数,使得 有一个前导 1,只需计算尾数中的前导零并加一,然后从原始指数中减去结果,然后还将尾数向左移动结果(因此0.000000101 * 2^-50 将导致 6+1 并变为1.01 * 2^-57)。
【讨论】:
-1022。那么指数是多少?
1.<fraction_bits> * 2^<exponent_bits - bias>。但是对于正的次正规或零,您需要0.<fraction_bits> * 2^<exponent_bits - bias + 1>(当然,在这种情况下,exponent_bits 的值为零)。因此,从这个意义上说,指数 的计算方式不同。 (对于binary64,最小可表示值为0.0000...0001 * 2^(-1022),或2^(-52) * 2^(-1022) = 2^(-1074)。)