存储 1000 个电话号码所需的内存

abh*_*120 2 algorithm bit

我正在读这个问题,

但不明白aix的答案的某些部分,即它如何只需要17位来存储5位电话号码以及总数如何变成2128字节来存储1000个号码。

请帮我解决这个愚蠢的疑问。

提前致谢...

Jac*_*ack 5

前 5 位数字应存储一次,因此,由于 5 位数字表示十进制数 0-99999 之间的数字,因此您至少需要将其存储为二进制。

现在第一个可以容纳 99999 个数字的二进制值是 131072,即 2^17。因此 17 位用于公共前缀。

现在您需要为每个数字的最低部分存储 1000 个 5 位数字。与以前相同的方法。每个数字 17 位 = 17000 位。

Total: 17000 + 17 = 17017 bits

每个字节有 8 位,所以

17017/8 = 2127.125

您至少需要2128 字节