2014-10-03 2 views
-1

говорят, что у нас есть 10-значный номер телефона (xxx) xxx xxxx. Сколько памяти потребуется для хранения всех возможных номеров, если каждое число может быть любой цифрой 0-9.Сколько памяти вам нужно для хранения всех возможных телефонных номеров?

Это мой расчет, но я хочу, чтобы убедиться, что это правильно:

Есть 10^9 возможных комбинаций (9 цифр, каждый из которых имеет 10 возможных значений). Каждая цифра может быть 0 - 9, что составляет 10 возможных значений, поэтому каждая цифра должна быть 4 бита. Каждое число составляет 4 бита * 9 цифр = 36 бит.

(36 бит * 10^9 комбинаций)/(8 бит/байт) = 4,5 * 10^9 байт/10^6 байт/ГБ = 4500 ГБ.

Это правильно? Благодаря! :)

+0

9 цифр? 3 + 3 + 4 = 9? – par

+5

Этот вопрос кажется не по теме, потому что это упражнение в арифметике, а не вопрос программирования. –

+0

Речь идет не только об арифметике. Количество перестановок есть, но как хранить их в наименьшем объеме памяти связано с программированием, а не только с математикой. – hatchet

ответ

1

Вы можете хранить каждый номер телефона как одно целое, а не сохранять цифры. Поскольку вы назначили 4 бита для хранения значений 0-10, вы теряете память. Кроме того, почему есть 9 цифр? Разве не должно быть 10?

Возьмите, пожалуйста, самый большой возможный телефон: 999 999 9999 (или в вашем примере 999 999 999), а затем преобразуйте его в базу 2, чтобы выяснить, какое наибольшее количество бит требуется.

Результаты этого преобразования являются:

999 999 999 =  111011100110101100100111111111 base 2 (length 30) 
999 999 9999 = 1001010100000010111110001111111111 base 2 (length 34) 

Так что все номера могут быть сохранены с использованием 30 или 34 бита каждый, а не 36.

Остальная часть расчета вы можете сделать сами!

+0

Возможно, вам будет легче сделать log2 (9999999999) – par

+0

А затем, зная, что максимальная длина бита 34 на номер телефона и 10000000000 возможных телефонных номеров, минимальная требуемая память (34 * 10000000000) bits = 42500000000 bytes = 41503906.25 KB = ~ 40531.16 MB = ** ~ 39.58 GB **. –

0

Если вам нужен набор телефонных номеров, то есть структура данных, которая содержит или не содержит номер телефона, все, что вам действительно нужно, составляет 10^10 бит. Если n-й бит равен 1, номер телефона с числовым значением n находится в наборе. Иначе это не так. Полный гигабайт составляет более миллиарда байт (около 1.074 x 10^9), поэтому 10^10 бит составляет около 1.164 ГБ.

Если вам нужно больше информации о телефонах, чем это, конечно, потребуется больше памяти.

Смежные вопросы