两种不同浮点表示形式之间的关系

时间:2019-11-12 18:12:31

标签: floating-point precision ieee-754

为简单起见,我将使用并请求使用8位浮点数。另外,请忽略符号位。

在“数值方法”课程中,我们在理论课程中学习一种浮点表示形式,在实验室课程中学习另一种类型的浮点表示形式。我们两个都有不同的老师,他们不会就连续课程中讨论的主题进行合作。

在理论课上,我们被告知浮点数是这样表示的:

enter image description here

其中 d_1 总是 。1.没有告知其他条件/约束。我们称之为 A

在实验课中,我们学习了IEEE-754格式:

enter image description here

其中 e 仅在为000时才为1,如果为111且尾数为0000,则为无穷大;如果为111且尾数为XXXX,则不是数字。我们称它为 B

这就是我所了解的,当涉及到找到最小的非零数字时。

在A中, e 变为e_min-3,即0-3。也就是说,总数为0.1 * 2 ^ -3,即2 ^ -4。

但是在B中,最小的非零法线是1 * 2 ^(1-3),即2 ^ -2;最小的非零非正规数为0.0001 * 2 ^(1-3),即2 ^ -4 * 2 ^ -2,即2 ^ -6。

即使它们都被认为是正确的表示形式,它们也不匹配。我可以找到的所有其他来源都只能遵循IEEE-754格式,或者只是声明可以通过简单地更改小数点和指数的位置来表示常规数字。但是没有人告诉我它们之间的关系,例如从21:50开始的这个人here

我要去哪里错了?如何获得相同的值?它们有什么关系?

1 个答案:

答案 0 :(得分:0)

我同意它们不匹配。

“ A”是大多数二进制浮点数在IEEE-754出现之前的工作方式。

很多边缘情况没有很好地处理。因此,在80年代初期出现了754(“ B”)。

  • 以前,“规范化”是可选的。那是d1不一定是1。“ A”有点奇怪,因为我认为操作后没有任何硬件强制规范化。 (那时规范化是一项昂贵的操作。)
  • 不规范的数字和“逐渐下溢”。这给理解和硬件实现增加了很多复杂性,但是数学家喜欢它。这些数字在“ A”中不允许。
  • 为“ e”选择一个值,以使几乎所有逆(1 / x)都不会上溢/下溢。
  • (“ B”中的前导1)实际上是一个“自由”位,因为它实际上不在表示中,因此比所有前任所拥有的精度更高,且没有损失指数范围。 (注意:这只能用于base-2,而不能用于base-16(IBM-360)base-10等。)目前尚不清楚“ A”是否隐藏d1。
  • 无穷大和NaN偷走了最大偏置指数值(轻微损失)。也许只有CDC在此之前有这样的概念。

最小的数字:

A:0.100 ... 00,具有A的最小指数
B:0.000 ... 01,具有B的最小指数

几乎每个商业浮点实现都遵循IEEE-754;是古代历史的“ A”。