【问题标题】:Minimum number of bits required for a range of numbers数字范围所需的最小位数
【发布时间】:2018-02-13 14:48:43
【问题描述】:

我正在尝试为有关测量压力的问题找出答案。 测量值应该以二进制浮点格式存储,我的任务是在一些约束条件下确定这样做所需的最小位数;

最大压力为1e+07 Pa

最小压力为 10 Pa

测量精度为 0.001 %

所以如果我理解正确,我可能会碰巧测量

1e+07 + 0.00001 * 1e+07 = 10000100 帕

并且想要精确地存储它。这意味着我需要 24 位,因为

2^23

这是否包括负号的 1 位?由于我们不测量负压,所以更准确的答案是 23 位吗?

对于最小压力,我可能碰巧测量到 9.9999 Pa,并希望正确存储它,所以 4 位小数。 因为我可以进行相同类型的计算并最终得到 ​​p>

2^13

这是否已经包含在我首先选择的 23-24 位中?

我对此很陌生,所以任何帮助或只是澄清将不胜感激。

【问题讨论】:

    标签: binary precision point floating


    【解决方案1】:

    除非您出于 (i.) 学术兴趣或 (ii.) 存储空间真的很短 - 我不会解决这两个问题 - 我强烈建议您不要担心存储空间的数量位,而是使用标准浮点数(4 字节)或双精度数(8 字节)。数据库和软件包理解浮点数和双精度数。如果您尝试使用最少的位数来制作自己的浮点格式,那么您就是在为自己添加大量工作。

    浮点数将保留 7 位有效数字,而双精度数将保留 16 位。如果您想获得技术性,浮点数(单精度)使用 8 位作为指数,1 位作为符号,其余 23 位作为有效数,而双精度(双精度)使用 11 位作为指数,1 位用于符号,52 位用于有效数。

    所以我建议您转而关注浮点数还是双精度数是否最能满足您的需求。

    我知道这并不能回答您的问题,但我希望它能满足您的需求。

    【讨论】:

    • 您好,感谢您的回答。如果这确实是一个工业问题并且只是一个实用性问题,我希望我会得出这个结论,但原因是学术兴趣。不过还是谢谢!
    • 将其视为一项学术练习,一种方法可能是确定 (i.) 您需要多少位精度以及 (ii.) 您需要多大的指数。例如,如果您想允许 5 个有效数字(即 0-99999),那么您将需要 17 位(可以容纳 0-131071),如果您想要从 E0 到 E7 的指数,那么这只是 3 位(0-7) .假设您不需要持有总共 (17+3=) 20 位的符号(仅限正数)。您可能希望允许超过 5 个有效数字,但希望这可以为您提供一个可能的前进方向。
    • 所以,就我而言;有效的最大数字是 10000100,即 8 位有效数字。只有那部分给出 24 位。正如您所说,E0-E07 是三个,它将 10000100 表示为 1.00001E07,这表明满足精度约束。这加起来是 27 位,只包括正数。这听起来更正确,因为现在考虑了准确性,这就是我之前遇到的问题。我真的看不出它是如何包含在内的,但是有了这个答案,如果我理解正确,我会这样做。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-28
    • 2020-08-13
    • 2023-03-05
    • 2020-07-22
    • 2019-06-20
    • 1970-01-01
    相关资源
    最近更新 更多