web-dev-qa-db-fra.com

Combien de valeurs peuvent être représentées avec n bits?

Par exemple, si n=9, alors combien de valeurs différentes peuvent être représentées dans 9 chiffres binaires?

Je pense que si je règle chacun de ces 9 bits sur 1, je ferai le plus grand nombre possible que ces 9 chiffres peuvent représenter. Par conséquent, la valeur la plus élevée est 1 1111 1111 qui est égal à 511 en décimal. Je conclus donc que 9 chiffres de binaire peuvent représenter 511 valeurs différentes.

Est-ce que mon processus de pensée est correct? Si non, quelqu'un pourrait-il bien vouloir expliquer ce qui me manque? Comment puis-je généraliser à n bits?

40
Sean

29 = 512 valeurs, car c’est le nombre de combinaisons de zéros et de combinaisons possibles.


Ce que ces valeurs représentent dépendra toutefois du système que vous utilisez. Si c'est un entier non signé, vous aurez:

000000000 = 0 (min)
000000001 = 1
...
111111110 = 510
111111111 = 511 (max)

Dans complément à deux , qui est couramment utilisé pour représenter des entiers en binaire, vous aurez:

000000000 = 0
000000001 = 1
...
011111110 = 254
011111111 = 255 (max)
100000000 = -256 (min) <- yay integer overflow
100000001 = -255
...
111111110 = -2
111111111 = -1

En général, avec k bits, vous pouvez représenter 2k valeurs. Leur portée dépendra du système que vous utilisez:

Non signé: 0 à 2k-1
Signé: -2k-1 à 2k-1-1

51
NullUserException

Ce qu'il te manque: zéro est une valeur

10
SamStephens

Une meilleure façon de le résoudre est de commencer petit.

Commençons par 1 bit. Ce qui peut être soit 1 ou 0. C'est 2 valeurs, ou 10 en binaire.

Maintenant 2 bits, qui peuvent être soit 00, 01, 10 ou 11 C'est 4 valeurs, ou 100 en binaire ... Voir le motif?

2
Randy the Dev

Ok, puisqu'il a déjà "fui": Il vous manque zéro, donc la bonne réponse est 512 _ (511 est le plus grand, mais c'est 0 à 511, pas 1 à 511).

À propos, un bon exercice de suivi consisterait à généraliser ceci:

How many different values can be represented in n binary digits (bits)?
1
schnaader

Sans vouloir vous donner la réponse, voici la logique.

Vous avez 2 valeurs possibles dans chaque chiffre. vous en avez 9.

comme dans la base 10 où vous avez 10 valeurs différentes par chiffre, dites que vous en avez 2 (ce qui fait de 0 à 99): 0 à 99 donne 100 nombres. si vous faites le calcul, vous avez une fonction exponentielle

base^numberOfDigits:
10^2 = 100 ;
2^9 = 512
1
pastjean

Il y a un moyen plus facile de penser à cela. Commencez avec 1 bit. Cela peut évidemment représenter 2 valeurs (0 ou 1). Qu'est-ce qui se passe quand on ajoute un peu? Nous pouvons maintenant représenter deux fois plus de valeurs: les valeurs que nous pouvions représenter auparavant avec un 0 ajouté et les valeurs que nous pouvions représenter auparavant avec un 1 ajouté.

Donc, le nombre de valeurs que nous pouvons représenter avec n bits est juste 2 ^ n (2 à la puissance n)

1
dave

Ce qui vous manque, c'est quel schéma de codage est utilisé. Il existe différentes manières de coder des nombres binaires. Regardez dans les représentations de nombres signés. Pour 9 bits, les plages et le nombre de nombres pouvant être représentés diffèrent en fonction du système utilisé.

1
James Kastrantas