необходимо вычислить биты - PullRequest
0 голосов
/ 19 ноября 2010

Мне нужна помощь с этим

Меня спросили, для целого числа без знака от 1 до 1 миллиарда, сколько нужно битов!

Как рассчитать это?

Спасибо

ОБНОВЛЕНИЕ !!!!

Это то, что я хотел знать, потому что интервьюер сказал 17

Ответы [ 3 ]

6 голосов
/ 19 ноября 2010

Возьмите базу 2 из 1 миллиарда и округлите.

В качестве альтернативы вы должны знать, что целые числа (с более чем 4 миллиардами значений) требуют 32-разрядных, поэтому для 2 миллиардов вам потребуется 31-разрядный и для 1 миллиарда 30-разрядных.

Еще одна удобная вещь, которую нужно знать, это то, что каждые 10 бит увеличивают количество значений, которые вы можете представить, более чем в 1000 раз (1024), поэтому для 1000 вам нужно 10 битов, 1 миллиону нужно 20 битов и 1 миллиард потребностей 30 бит.

3 голосов
/ 19 ноября 2010

Рассчитайте log2(1000000000) и округлите его. Работает до 30 бит.

Например, в Python вы можете рассчитать это так:

>>> import math
>>> math.ceil(math.log(1000000000, 2))
30.0
2 голосов
/ 19 ноября 2010
2^10 = 1024
2^10 * 2^10 = 2^20 = 1024*1024 = 1048576
2^10 * 2^10 * 2^10 = 2^30 = 3 * 1024 ~= 1,000,000

=> 30 бит

...