Calcul des bits nécessaires pour stocker le nombre décimal

C'est une question de devoir que je suis coincé avec.

considère la représentation entière non signée. Combien de bits seront requis pour stocker un nombre décimal contenant:

i) 3 digits ii) 4 digits iii) 6 digits iv) n digits

je sais que la plage de l'entier non signé sera 0 à 2^n Mais je ne comprends pas comment le nombre de bits requis pour représenter un nombre dépend de lui. Merci de m'aider.

Merci d'avance.

15
demandé sur sampablokuper 2011-08-22 19:47:06

10 réponses

Eh bien, vous avez juste à calculer la gamme pour chaque cas et trouver la plus faible puissance de 2 qui est plus élevé que cette gamme.

par exemple, en i), 3 chiffres décimaux -> 10^3 = 1000 nombres possibles donc vous devez trouver la plus faible puissance de 2 qui est supérieure à 1000, qui dans ce cas est 2^10 = 1024 (10 bits).

Edit: Fondamentalement, vous devez trouver le nombre de numéros possibles avec le nombre de chiffres que vous avez et puis trouver quel nombre de chiffres (dans l'autre base, dans ce cas base 2, binaire) a au moins les mêmes nombres possibles que celui en décimal.

pour calculer le nombre de possibilités compte tenu du nombre de chiffres: possibilities=base^ndigits

donc, si vous avez 3 chiffres en décimal (base 10) vous avez 10^3=1000 possibilités. Ensuite, vous devez trouver un nombre de chiffres en binaire (bits, base 2) de sorte que le nombre de possibilités est au moins 1000, qui en ce cas est 2^10=1024 (9 chiffres ne suffit pas parce que 2^9=512 qui est moins de 1000).

si vous généralisez ceci, vous avez: 2^nbits=possibilities <=> nbits=log2(possibilities)

qui s'applique à i) donne: log2(1000)=9.97 et puisque le nombre de bits doit être un entier, vous devez arrondir à 10.

24
répondu guardianpt 2011-08-23 12:55:42

la formule pour le nombre de bits binaires requis pour un entier positif n est:

log e (n) / log e (2)

et arrondissez.

Sur votre calculatrice, journal e peut seulement être étiquetés journal ou ln (logarithme népérien).

4
répondu rghome 2016-11-22 17:32:41

Ok pour généraliser la technique de combien de bits vous avez besoin pour représenter un nombre est fait de cette façon. Vous avez R les symboles de représentation et vous voulez savoir combien de bits, résoudre cette équation R=2^n ou log2(R)=n. Où n est le nombre de bits et R est le nombre de symboles pour la représentation.

pour le système de nombres décimaux R=9 donc nous résolvons 9 = 2^n, la réponse est 3.17 bits par chiffre décimal. Ainsi un nombre à 3 chiffres aura besoin de 9.51 bits ou 10. Un 1000 nombre de chiffres nécessite 3170 bits

3
répondu jk3 2012-07-20 20:32:49

divisez le nombre par 2 jusqu'à ce que vous obteniez un quotient de 0.

1
répondu Arun 2011-08-22 16:27:00

le plus grand nombre qui peut être représenté par un n chiffre de base b est b n - 1 . Par conséquent, le plus grand nombre qui peut être représenté dans N chiffres binaires est 2 N - 1 . Nous avons besoin du plus petit entier N tel que:

2 N - 1 ≥ b n - 1

⇒ 2 N ≥ b n

prenant le logarithme de base 2 des deux côtés de la dernière expression donne:

log 2 2 N ≥ log 2 b n

⇒ N ≥ log 2 b n

⇒ N ≥ log b n / log 2

puisque nous voulons le plus petit entier N qui satisfait la dernière relation , pour trouver N , trouver log B n / log2 et prendre le plafond.

dans la dernière expression, n'importe quelle base est fine pour les logarithmes, aussi longtemps que les deux bases sont de même. Il est commode ici, puisque nous sommes intéressés dans le cas où b = 10 , d'utiliser la base 10 logarithmes en profitant de log 10 10 n = = n .

pour n = 3 :

N = Escape 3 / log 10 2⌉ = 10

pour n = 4 :

N = Escape 4 / log 10 2⌉ = 14

pour n = 6 :

N = occasion6 / log 10 2⌉ = 20

et en général, pour n décimales:

N = Mon n / log 10 2⌉

1
répondu David Bowling 2018-03-08 19:24:04

la réponse la plus simple serait de convertir les valeurs requises en binaire, et de voir combien de bits sont nécessaires pour cette valeur. Cependant, la question demande combien de bits pour un nombre décimal de X chiffres. Dans ce cas, il semble que vous devez choisir la valeur la plus élevée avec X chiffres, puis convertir ce nombre en binaire.

comme exemple de base, supposons que nous voulions stocker un nombre de base à dix chiffres, et que nous voulions savoir combien de bits cela nécessiterait. Le le plus grand nombre de base de 10 à 1 chiffre est 9, donc nous devons le convertir en binaire. Cela donne 1001, qui a un total de 4 bits. Ce même exemple peut être appliqué à un nombre à deux chiffres (la valeur max étant 99, qui convertit à 1100011). Pour résoudre pour n chiffres, vous avez probablement besoin de résoudre les autres et la recherche d'un modèle.

pour convertir les valeurs en binaire, vous divisez à plusieurs reprises par deux jusqu'à ce que vous obtenez un quotient de 0 (et tous vos restes seront 0 ou 1). Vous faites l'inverse les commandes de vos restes pour obtenir le nombre en binaire.

exemple: 13 en binaire.

  • 13/2 = 6 r 1
  • 6/2 = 3 r 0
  • 3/2 = 1 r 1
  • 1/2 = 0 r 1
  • = 1101 ((8*1) + (4*1) + (2*0) + (1*1))

Espérons que cette aide.

0
répondu Cooper 2011-08-22 17:23:37

laisser son bit n requis puis 2^N=(base)^chiffre, puis prendre log et Compter n°. pour n

0
répondu Gate Aspirant 2014-01-24 15:33:52

Pour un nombre binaire de n chiffres la valeur décimale maximale qu'il peut tenir sera

2^n - 1, et 2^n est le nombre total de permutations qui peut être généré à l'aide de ces chiffres.

en Prenant un cas où vous voulez seulement trois chiffres, c'est à dire votre cas 1. Nous voyons que les exigences est,

2^n-1 >= 999

application de rondins sur les deux côtés,

log (2^n-1) > = log (999)

log (2^n) - log(1) >= log (999)

n = 9.964 (env).

en prenant la valeur ceil de n puisque 9.964 ne peut pas être un nombre valide de chiffres, nous obtenons n = 10.

0
répondu Prathik Rajendran M 2015-02-20 09:20:03

en supposant que la question Est de savoir quel est le minimum de bits requis pour que vous stockiez

  1. numéro à 3 chiffres

Mon approche de cette question:

  • Quel est le nombre maximum de 3 chiffres que nous devons stocker? Ans: 999
  • Quel est le nombre minimum de bits requis pour stocker ce nombre?

This le problème peut être résolu de cette façon en divisant 999 par 2 récursivement. Cependant, il est plus simple d'utiliser la puissance des mathématiques pour nous aider. Essentiellement, nous résolvons n Pour l'équation ci-dessous:

2^n = 999
nlog2 = log999
n ~ 10

vous aurez besoin de 10 bits pour stocker le nombre à 3 chiffres.

utilisez une approche similaire pour résoudre les autres sous-questions!

Espérons que cette aide!

0
répondu Arial 2015-06-10 08:25:59

il y a beaucoup de réponses ici, mais je vais ajouter mon approche puisque j'ai trouvé ce post tout en travaillant sur le même problème.

à partir de ce que nous savons, voici le nombre de 0 à 16.

Number           encoded in bits         minimum number of bits to encode
0                000000                  1
1                000001                  1
2                000010                  2
3                000011                  2
4                000100                  3
5                000101                  3
6                000110                  3
7                000111                  3
8                001000                  4
9                001001                  4
10               001010                  4
11               001011                  4
12               001100                  4
13               001101                  4
14               001110                  4
15               001111                  4
16               010000                  5

en regardant les pauses, il montre ce tableau

number <=       number of bits
1               0
3               2
7               3
15              4

alors, comment calculer le modèle?

rappelez-vous que log base 2 (n) = log base 10 (n) / log base 10 (2)

number    logb10 (n)   logb2 (n)   ceil[logb2(n)] 
1         0            0           0           (special case)
3         0.477        1.58        2
7         0.845        2.807       3  
8         0.903        3           3           (special case)
15        1.176        3.91        4
16        1.204        4           4           (special case)
31        1.491        4.95        5
63        1.799        5.98        6

maintenant le résultat désiré correspondant à la première table. Notez que certaines valeurs sont aussi des cas spéciaux. 0 et tout nombre qui est un pouvoir de 2. Ces valeurs ne changent pas quand vous appliquez le plafond ainsi vous savez que vous devez ajouter 1 pour obtenir la longueur minimale du champ de bits.

pour tenir compte des cas spéciaux, ajoutez-en un à l'entrée. Le code résultant implémenté en python est:

from math import log
from math import ceil
def min_num_bits_to_encode_number(a_number):
    a_number=a_number+1  # adjust by 1 for special cases

    # log of zero is undefined
    if 0==a_number:
        return 0
    num_bits = int(ceil(log(a_number,2)))  # logbase2 is available
    return (num_bits)
0
répondu netskink 2017-05-25 13:52:37