2011-02-01 3 views
-1

Je dois représenter un nombre n en utilisant UNIQUEMENT x bits. Habituellement, je peux choisir la base appropriée et trouver le nombre de chiffres nécessaires. Mais ici, ma contrainte est que je n'ai que «x» bits disponibles. Je peux avoir plus de 1 'x' bits, cependant. J'essaie de comprendre comment les nombres peuvent être représentés dans un système donné comme celui-ci.Comment représenter le nombre n (supposer base 10) en utilisant x bits?

Répondre

1

Je ne sais pas si j'ai bien compris votre problème, mais en supposant que vous ayez un nombre naturel x qui peut être représenté avec m (par exemple 20 bits), mais vous n'avez que des tableaux de n bits (disons octets, c'est-à-dire des tableaux de 8 bits), la quantité de tableaux dont vous avez besoin est simplement arrondie au nombre naturel suivant. Pour un nombre qui a 20 chiffres au format binaire, ce serait 3 octets.

E.g. si votre numéro est

1001 01101100 10110100, 

vous pouvez stocker comme

00001001 

01101100 

10110100. 

Ce que vous avez fait est de

  1. (integer-) diviser votre numéro par 100.000.000 (10^1000, ou 2^8 dans le système décimal), notez le reste, tronquez le résultat

  2. (entier-) dividez le résultat ULT 1. par 100000000, notez le reste, tronquer le résultat

  3. (integer-) diviser le résultat de 2. par 100000000, notez le reste, tronquer le résultat

  4. rien d'intéressant à faire plus parce que le résultat de 3 était 0.

en supposant que nous parlons de nombres naturels ici, le ci-dessus devient dans le système décimal comme celui-ci:

1. 617652/256 = 2412 remainder 180 (10110100 in binary system) 

2. 2412/256 = 9 remainder 108 (01101100 in binary system) 

3.  9/256 = 0 remainder 9 (00001101 in binary system) 

Alors ce que vous faites est

while (number > 0) { 
    divide number by 2^n 
    remember remainder 
    truncate number 
} 

Restauration du nombre initial est laissé comme un exercice :)

Ceci est en fait un problème qui revient chaque fois que vous voulez traiter un très grand nombre entier sur la ordinateur. Je suppose qu'un bon endroit pour commencer à chercher des informations supplémentaires pourrait être http://en.wikipedia.org/wiki/Positional_notation.

Questions connexes