gpt4 book ai didi

floating-point - 最大的非规范化和规范化数是多少?(64 位,IEEE 754-1985)

转载 作者:行者123 更新时间:2023-12-04 06:50:12 25 4
gpt4 key购买 nike

我正在为浮点运算而苦苦挣扎,因为我真的很想了解这个话题!

我知道数字可以用科学记数法表示。

因此,对于这两个数字,指数应如下所示:

非规范化数:
11....11 所以 (1+1/2 + 1/2^2 + ... + 1/2^52)*2^1023

标准化数:
11....11 所以 (1+1/2 + 1/2^2 + ... + 1/2^52)*2^1024

但是,我不确定这是否正确?

我真的很感激你的回答!

PS。:在维基百科上的数字是given!然而,我不知道他们是怎么想出来的……

最佳答案

如您所知, double 格式如下所示:

enter image description here

理解非规范化数字的关键在于它们实际上并不是浮点数,而是使用定点微格式使用“正常”格式中未使用的表示。

普通浮点数的形式为:m*2^e哪里e通过从上面的指数场中减去偏差得到,m是一个介于 1 和 2 之间的数字,其中“二进制”点之后的位由上面的分数给出。二进制小数点前面的 1 不存储,因为已知它始终为 1。指数字段的值从 1 到 2046。值 0(全为零)和 2047(全为 1)保留用于特殊用途.

指数字段中的所有 1 表示我们有无穷大或 NaN(非数字)。

全零意味着我们正在处理非正规浮点数。这些仍然是相同的形式,m*2^e ,但 m 的值和 e是不同的派生出来的。 m现在是一个介于 0 和 1 之间的数字,因此二进制小数点前面有一个 0,而不是普通数字的 1。 e始终具有相同的值:-1022。所以指数是一个常数,这就是我之前称它为定点格式的原因。

因此,每个的最大可能值是:

  • 正常:(1+1/2 + 1/2^2 + ... + 1/2^52)*2^1023 = (2-2^-52)*2^1023 = 1.797...e+308
  • 非正规:(0+1/2 + 1/2^2 + ... + 1/2^52)*2^-1022 = (1-2^-52)*2^-1022 = 2.225...e -308
  • 关于floating-point - 最大的非规范化和规范化数是多少?(64 位,IEEE 754-1985),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20065406/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com