【问题标题】:How can one optimally store decimal digits in binary?如何以二进制最佳方式存储十进制数字?
【发布时间】:2021-07-26 05:32:10
【问题描述】:

我什么都不需要这个,但我只是好奇。

Wikipedia article about QR codes 表示存储一个十进制数需要每个数字 3⅓ 位。显然你不能有三分之一,所以我假设这是存储任何给定数字所需的平均位数。

两个问题:

  1. 平均而言,您可以将十进制数字存储在 3⅓ 位中吗?
  2. 无论真假,如何以最佳方式将十进制数字存储为二进制?

【问题讨论】:

  • 我不确定这个问题是否更适合软件工程,所以如果需要移动它我很好。
  • 3 和 1/3 似乎是估计值。假设它是正确的,您应该能够存储一个 10 位的三位十进制数。 10 位实际上允许 1024 个唯一值,所以那里有一些额外的空间。至于how can you store decimal digits in binary optimally - 你不能,总有可能出现舍入错误。好吧,您可以通过留出额外的空间将 整数 值准确地存储在给定的范围内,但不能存储实数,例如 1/3。

标签: binary decimal storage


【解决方案1】:

一般情况下,只要 2k≥10n,就可以使用 k 位存储 n 位。但特别是,您希望选择值接近的值(为给定的 n 选择最小的 k)。有了它,你会发现

  • 1 位 4 位 (BCD)
  • 2 位 7 位
  • 10 位 3 位 (BCT)
  • 103 位 31 位

另一个有趣的可能性是使用 53 位来存储 15 位 + 1 个非零位。这对于前导尾数始终非零的十进制浮点数很有用。

【讨论】:

    猜你喜欢
    • 2020-11-06
    • 2013-01-15
    • 2011-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-12
    • 2020-05-09
    相关资源
    最近更新 更多