Calcul des bits requis pour stocker le nombre décimal
C'est des devoirs à faire à la question que je suis coincé avec.
Envisager entier non signé de la représentation. Combien de bits sera
nécessaire au stockage d'un nombre décimal contenant:
i) 3 digits ii) 4 digits iii) 6 digits iv) n digits
Je sais que la gamme de l'entier non signé sera de 0 à 2^n mais je ne comprends pas comment le nombre de bits nécessaires pour représenter un nombre en dépend. Merci de m'aider.
Merci d'avance.
source d'informationauteur Fahad Uddin
Vous devez vous connecter pour publier un commentaire.
Eh bien, il suffit de calculer la distance pour chaque cas et à trouver la plus faible puissance de 2 supérieure à celle de la gamme.
Par exemple, dans i), 3 chiffres après la virgule -> 10^3 = 1000 nombres possibles de sorte que vous avez à trouver la plus faible puissance de 2 est supérieur à 1000, ce qui dans ce cas est de 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 ensuite trouver le nombre de chiffres (dans l'autre base, dans ce cas, la base 2, binaire) a au moins le même nombre que l'on en décimal.
Pour calculer le nombre de possibilités étant donné le 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 certain nombre de chiffres binaires (bits, base 2), de sorte que le nombre de possibilités est à moins de 1000, qui dans ce cas est2^10=1024
(9 chiffres n'est pas suffisant, car2^9=512
qui est de moins de 1000).Si vous généraliser cela, vous devez:
2^nbits=possibilities <=> nbits=log2(possibilities)
Qui s'applique à i) donne:
log2(1000)=9.97
et depuis le nombre de bits doit être un nombre entier, vous avez afin de l'arrondir à 10.La formule pour le nombre de bits binaires requis pour un nombre entier positif n est:
journale(n) /loge(2)
et ronde.
Sur votre calculatrice, loge peut juste être étiquetés journal ou ln (logarithme népérien).
Ok pour généraliser la technique de la façon dont de nombreux éléments dont 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 nombre décimal système R=9 donc nous résoudre 9=2^n, la réponse est 3.17 bits par les chiffres. Ainsi, un nombre à 3 chiffres aurez besoin 9.51 bits ou 10. Un 1000 chiffres besoins 3170 bits
Continuer à diviser le nombre par 2 jusqu'à obtenir un quotient de 0.
Le plus grand nombre qui peut être représenté par une n chiffres de la base de b est bn - 1. Par conséquent, le plus grand nombre qui peut être représenté dans N chiffres binaires est 2N - 1. Nous avons besoin du plus petit entier N tels que:
En prenant le logarithme en base 2 des deux côtés de la dernière expression donne:
Parce que nous voulons le plus petit entier N qui satisfait à la dernière relation, pour trouver Ntrouver journal bn /log2 et de prendre le plafond.
Dans la dernière expression, toute la base est très bien pour les logarithmes, tant que les deux bases sont les mêmes. Il est pratique ici, car nous nous sommes intéressés dans le cas où b = 10à l'utilisation de la base de 10 les logarithmes de prendre avantage de log1010n == n.
Pour n = 3:
Pour n = 4:
Pour n = 6:
Et, en général, pour n chiffres décimaux:
La réponse la plus simple serait de convertir les valeurs requises pour le binaire, et de voir combien de bits sont nécessaires pour que la valeur. Cependant, la question demande combien de bits pour un nombre décimal de X chiffres. Dans ce cas, il semble que vous ayez à choisir la valeur la plus élevée avec X chiffres, et ensuite de convertir ce nombre en binaire.
Comme un exemple simple, supposons que nous voulions stocker un 1 chiffres de la base de nombre de dix, et je voulais savoir combien de bits qui aurait besoin. Le plus grand 1 chiffres de la base de dix nombre de 9, donc nous avons besoin pour 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 (avec la valeur max de 99, qui convertit à 1100011). Pour résoudre de n chiffres, vous avez probablement besoin de résoudre les autres et de recherche d'un motif.
Pour convertir des valeurs binaires, plusieurs fois, vous divisez par deux jusqu'à obtenir un quotient de 0 (et l'ensemble de vos restes sera 0 ou 1). Vous reverse ensuite les commandes de vos restes pour obtenir le nombre en binaire.
Exampe: 13 binaire.
Espère que cette aide.
laisser son n bits alors 2^n=(base)^chiffres et ensuite prendre le journal et le comte n'. pour n
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 nombreux chiffres.
En prenant un cas où vous voulez seulement trois chiffres, c'est à dire votre cas 1. Nous voyons que les exigences de l'est,
2^n - 1 >= 999
L'application de journal sur les deux côtés,
log(2^n - 1) >= log(999)
log(2^n) - log(1) >= log(999)
n = 9.964 (env).
Prendre le ceil de la valeur de n depuis 9.964 ne peut pas être un nombre valide de chiffres, on obtient n = 10.
En supposant que l'on vous demande quel est le minimum de bits requis pour vous de stocker
Mon approche de cette question:
Ce problème peut être résolu de cette façon, en divisant 999 en 2 de manière récursive. Cependant, il est plus simple d'utiliser la puissance de maths pour nous aider. Essentiellement, nous résolvons n de l'équation ci-dessous:
Vous aurez besoin de 10 bits pour stocker nombre à 3 chiffres.
Utiliser la même approche pour résoudre les subquestions!
Espérons que cette aide!
Il y a beaucoup de réponses ici, mais je vais ajouter ma démarche car j'ai trouvé ce post tout en travaillant sur le même problème.
De commencer avec ce que nous connaissons ici sont le nombre de 0 à 16.
en regardant les pauses, il montre ce tableau
Alors, maintenant, comment pouvons-nous calculer le motif?
Rappelez-vous que la base du log 2 (n) = log base 10 (n) /log base 10 (2)
Maintenant le résultat souhaité répondre à la première table. Remarquez comment certaines valeurs sont des cas spéciaux. 0 et un nombre qui est une des puissances de 2. Ces valeurs ne changent lorsque vous appliquez le plafond de sorte que vous savez que vous avez besoin pour ajouter 1 pour obtenir de l'
le minimum de champ de bits de longueur.
De compte pour les cas particuliers en ajouter un à l'entrée. Le code résultant implémenté en python est: