使用较少位的无符号QWORD(64位)的值范围

Value range of unsigned qword (64-Bits) using less bits?

本文关键字:64位 范围 QWORD 无符号      更新时间:2023-10-16

我正在寻找一种表示值范围的方法:0-18446744073709551615使用少于8个字节。

我试图考虑一些可以做到的方法,但没有任何效果。从理论上讲,例如:使用单个字节表示至少2个字节的位序列。但是,2个字节具有65536个不同的位组合,而单个字节仅使我们的值范围为0-255(256组合)。

最好的方法可能是改变位的含义。那很好,但不能有任何精确损失。

我开始认为这根本不可能,尽管我想获得其他关于这个主题的观点和理论。

有2个规则:#1不能有任何精确损失(即所有数字0-184444444073709551615必须代表)。#2从标准64位形式转换不应导致需要超过7个字节(56位)。

这些规则使这一点变得特别困难。

这些规则使这一点变得特别困难。

是的,难以证明是不可能的。

对于每个可能的64B值,您可以无损地压缩8个字节到的8个字节,您可以继续重复该过程,直到您的1TB文件约为7个字节。

还有很多其他信息理论论证为什么这是不可能的。例如PIGONHOLE原理:n位只有2^n独特的位模式,因此少于64位的任何东西都无法对每个可能的64位值都有唯一的表示。


您可以使用的是Huffman编码或类似的方法:如果某些64B值比其他值更常见,则不太复杂的可变长度编码方案可以节省总字节。,但对于所有64B值都可以用可变的长度编码方案表示,对某些值的编码将占8字节以上。

存在更高级的熵编码方法,并在现代视频编解码器中使用。(例如X264的CABAC)。


有关更多理论,Wikipedia的无损压缩文章有一个局限性部分。

另请参见:

  • cs Theory.se:什么是无损压缩数据的极限?(如果存在这样的限制)

  • kolmogorov复杂性