【问题标题】:How is exponent calculated for subnormals in floating point如何为浮点中的次正规计算指数
【发布时间】:2017-02-18 17:57:51
【问题描述】:

假设我有这样的浮点位表示:

0 0000000000 00000000000000000000000000000000000000000000000000001

我知道指数全为零的浮点数称为次正规数或非正规数。并且指数的计算方式与考虑偏差的普通浮点数不同。

那么如何计算次正规的指数呢?

【问题讨论】:

    标签: binary floating-point


    【解决方案1】:

    指数的计算方式没有不同。次正规的唯一区别是前导 0 而不是前导 1(因此您的示例等于 0.0000···0001 * 2^-1022 而不是 1.0000···0001 * 2^-1022

    如果您正在寻找一个等价的尾数和指数,使得 有一个前导 1,只需计算尾数中的前导零并加一,然后从原始指数中减去结果,然后还将尾数向左移动结果(因此0.000000101 * 2^-50 将导致 6+1 并变为1.01 * 2^-57)。

    【讨论】:

    • 感谢您的回答。问题来自this answer,其中建议指数为-1022。那么指数是多少?
    • 这有点误导:对于 IEEE 754 二进制格式的正正数,您将值解释为 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)。)
    • 他说了什么。忘记了次正规的特殊规则。
    • @MarkDickinson,您能发表您的评论作为答案吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-30
    • 1970-01-01
    • 2011-01-10
    相关资源
    最近更新 更多