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

时间:2012-06-24 17:12:56

标签: algorithm bit

我正在阅读this问题,

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

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

提前致谢...

2 个答案:

答案 0 :(得分:4)

前5位数应存储一次,因为5位数表示0-99999十进制数中的数字,您需要至少存储二进制数。

现在,允许您输入99999个数字的第一个二进制值是131072,即2 ^ 17。所以17位用于公共前缀。

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

Total: 17000 + 17 = 17017 bits

每个字节都有8位,所以

17017/8 = 2127.125

您至少需要 2128字节

答案 1 :(得分:2)

10 5 = 100000.ceil(log 2 (100000))= 17.