首页 > 解决方案 > CSAPP 3ed 练习题 2.49 IEEE 浮点精度

问题描述

对于具有 n 位小数的浮点格式,请给出不能精确表示的最小正整数的公式(因为它需要 (n + 1) 位小数才能精确)。假设指数域大小 k 足够大,可表示的指数范围不会为这个问题提供限制。

书上给出的解是2^(n + 1) + 1,但是没有提供任何解释。有人能解释一下我们是如何得出这个公式的吗?谢谢你。

标签: cfloating-pointieee-754

解决方案


考虑具有23位精度分数的32 位浮点 IEEE表示。

24位整数 111111111111111111111111 2 = 2 24 - 1 可以精确表示,因为有足够的位(即使最高有效位是隐式的)。

加 1,我们有 1000000000000000000000000 2 = 2 24。没问题,即使它是 25 位数字,因为它是 2 的幂。

但是,下一个 1000000000000000000000001 2 = 2 24 + 1无法准确表示,因为表示的小数部分没有足够的位。


推荐阅读