代码之家  ›  专栏  ›  技术社区  ›  atoMerz

如何计算IEEE扩展双精度的最小值和最大值?

  •  1
  • atoMerz  · 技术社区  · 14 年前


    3.362... 10-4932
    1.189... 10+4932
    (2^14) * log(2) ~ 4932

    1 回复  |  直到 12 年前
        1
  •  0
  •   Tronic    14 年前

    尾数有一个隐含的开始位。这避免了为总是一个的位浪费一个存储位(减少的浮点除外,这是所有指数位为零时的特殊情况)。

    请注意,隐式的第一个数字只能是二进制的。例如,在十进制中,你可能有3.14e+2,你不能仅仅删除第一个数字(3),因为你不知道它是哪个数字(1-9)。

    例如,浮点值seeemmmm将被读取为(在C样式的伪代码中)

    (s ? -1 : 1) * ((binary)1mmmmm << ((binary)eee - bias));
    

    其中bias是这个特定浮点类型的常量,因此所有的指数值(eee)都可以是正的,000是最负的指数。

    因此,您可以通过0b111111(比尾数多一位)移动指数的最大值(无偏)来计算最大值。最小值与负号相同。