编码数字的最小字节数是多少?

时间:2013-02-28 08:51:13

标签: algorithm math

我需要编码0到7 ^ 20(整数)范围内的数字。我想使用最小字节来编码这样的数字。那么做这个的最小字节数是多少?请帮我。 非常感谢你

2 个答案:

答案 0 :(得分:1)

粗略估计:3位足以编码0..7,因此3⋅20= 60位足以编码0..7 20 。 更准确:⌈log 2 7 20 ⌉= 57位就够了。

如果要编码的数字均匀分布在此范围内,则无法做得更好。否则,您可以通过为更常见的数字提供更短的代码来平均做得更好。

答案 1 :(得分:1)

您需要编码从0到7 20 ,这意味着总共有7个 20 + 1个值。没有任何关于输入的信息,你可以做的最好是⌈log 2 (7 20 + 1)⌉=每位数57位。

您可以为每个数字提供8个字节,这也很容易解码。但每个数字有7比特的浪费。

另一种方法是每个数字准确存储57位并将数字紧密地打包在一起。每8个数字可以保存7个字节(因此8个数字将占用57个字节而不是64个字节)。但是,恢复原始数字会稍微复杂一些。

我缺乏知识不允许我谈论任何可以做得更好的方法。