【发布时间】:2017-06-08 13:31:41
【问题描述】:
有没有一种通用的方法来表示包含n 位的数字使用n-1 位;例如显示 1001 有 4 位使用 XXX where X = {0|1} 有 3 位。此外,映射应该能够在没有任何冲突的情况下检索原始二进制文件。
这个page 是迄今为止我发现的最相关的参考资料,它试图计算位数,但不减少位数。
编辑:我知道这听起来不可能,但我很好奇是否存在解决方法!
【问题讨论】:
-
所以你想把一个n位数据压缩成
n-1?凉爽的。然后将n-1压缩成n-2并压缩为零。完美压缩。你肯定会获得诺贝尔奖。 -
你怎么可能做到这一点?
-
4 位编码 16 个可能的值。 3 位编码 8 个可能的值。所以答案是否定的。
-
没有。您所涉及的内容称为压缩。没有通用的、完美的压缩。假设我们想要将每个 4 位字符串压缩到 3 位或更少位。有 2^4 = 16 个不同的 4 位字符串,但只有 2 个 1 位字符串、4 个 2 位字符串和 8 个 3 位字符串,总共有 14 个可能的值。您有 16 个值要存储到 14 个插槽中。其中两个不能压缩。
-
在某些特殊情况下可以省略位,因为它是根据其他原则假设的。例如。归一化浮点数尾数的高位始终为 1,因此不需要包含在表示中。
标签: c algorithm bit-manipulation bit