2010-11-19 4 views
0

J'ai besoin d'aide pour celacalcul des bits nécessaires

On m'a demandé que pour un nombre entier non signé de 1 à 1 milliard, combien de bits sont nécessaires!

Comment calculons-nous cela?

Merci

MISE À JOUR !!!!

Ce que je voulais savoir parce que le interviwer dit

+1

Quelle partie de base 2 vous embrouille? Pourriez-vous être plus précis sur ce que vous ne pouvez pas comprendre? –

+3

Si votre intervieweur a dit 17 alors il est tout simplement faux, ou vous ne nous donnez pas toute la question. –

+0

Soit votre interlocuteur est un idiot, soit vous avez mal posé la question. 17 bits vous obtiendrez n'importe quel nombre de 0 à 131071. Si vous commencez à 1, vous pouvez représenter des nombres jusqu'à 131072. – nmichaels

Répondre

3

Calculer log2(1000000000) et arrondir. Cela fonctionne à 30 bits.

Par exemple en Python vous pouvez calculer comme ceci:

>>> import math 
>>> math.ceil(math.log(1000000000, 2)) 
30.0 
6

Prenez la base de 2 log de 1 milliard et arrondir. Alternativement, vous devez savoir que les entiers (avec plus de 4 milliards de valeurs) nécessitent 32 bits, donc pour 2 milliards vous auriez besoin de 31 bits et de 1 milliard, 30 bits. Une autre chose à savoir est que chaque 10 bits augmente le nombre de valeurs que vous pouvez représenter d'un facteur supérieur à 1000 (1024), donc pour 1000, vous avez besoin de 10 bits, 1 million de besoins 20 bits, et 1 milliard besoin de 30 bits.

2
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 bits