我需要编码0到7 ^ 20(整数)范围内的数字。我想使用最小字节来编码这样的数字。那么做这个的最小字节数是多少?请帮我。 非常感谢你
答案 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个字节)。但是,恢复原始数字会稍微复杂一些。
我缺乏知识不允许我谈论任何可以做得更好的方法。