Représentation des entiers naturels en base 2
Ce chapitre ne traîte que d'entiers naturels, que par la suite j'abrège en "entiers".
Les contraintes matérielles et technologiques font que les ordinateurs ne peuvent manipuler que deux valeurs : 0 et 1. Celà corresponds à deux états dans un transistor : du courant passe et pas de courant.
Les nombres en base 10
Les nombres que l'on manipulent tous les jours sont exprimés en base 10. Celà veut dire qu'ils utilisent 10 symboles, nos chiffres, dans leur représentation : \(0\), \(1\), \(2\), \(3\), \(4\), \(5\), \(6\), \(7\), \(8\) et \(9\).
Imaginons qu'on s'en serve pour compter des arbres. Si on a \(329\) arbres,
- Le chiffre \(9\), les unités, représente 9 arbres.
- Le chiffre \(2\), les dizaines, représente 20 arbres, soit 2 paquets de 10.
- Le chiffre \(3\), les centaines, représente 300 arbres, soit 3 paquets de 100.
En fonction de la position du symbole (le chiffre) dans le nombre, il représente une quantité différente. On peut le résumer dans un tableau. Attention, la position est exprimée de droite à gauche à partir de 0 ! (donc \(9\) est en position 0 et \(3\) est en position 2)
Position | Taille du paquet | Chiffre | Quantité |
---|---|---|---|
0 | 1 | \(9\) | 9 |
1 | 10 | \(2\) | 20 |
2 | 100 | \(3\) | 300 |
En fait, pour un chiffre en position \(p\), la taille du paquet est de \(10^{p}\). On rappelle que \(x^{0} = 1\), quelle que soit la valeur de \(x\).
On calcule la valeur représentée par le nombre en faisant l'addition de toutes ces quantités.
La base 2
Pour représenter un nombre en base 2, c'est le même principe, mais avec 2 symboles : \(0\) et \(1\). Pour différencier les nombres en base 10 et les nombres en base 2, on écrira la base à l'indice. \(1011_{2}\) est en base 2 et vaut \(11_{10}\). Si on ne précise pas la base, alors le nombre est en base 10.
Continuons de compter des arbres. Si on a \(1011_{2}\) arbres, alors :
- Le chiffre en position 0, les unités, représente 1 arbre.
- Le chiffre en position 1, les "deuzaines"1, représente 2 arbres. C'est à dire 1 paquet de 2.
- Le chiffre en position 2, les "quatraines"1, représente 0 arbres. C'est à dire 0 paquet de 4.
- Le chiffre en position 3, les "huitaines"1, représente 8 arbres. C'est à dire 1 paquet de 8.
Exercice : valeur décimale d'un nombre en base 2
Calculez la valeur décimale de \(1011_{2}\)
Lisez bien la correction, elle fait partie du cours !
Reprenez le calcul pour \(4708\) et changez les \(10\) pour des \(2\).
Pour un chiffre en position \(p\), la taille du paquet en base 2 est donc de \(2^{p}\).
Voici les valeurs décimales de quelques puissances de 2:
Exposant | Valeur exposant | Valeur décimale |
---|---|---|
0 | \(2^{0}\) | 1 |
1 | \(2^{1}\) | 2 |
2 | \(2^{2}\) | 4 |
3 | \(2^{3}\) | 8 |
4 | \(2^{4}\) | 16 |
5 | \(2^{5}\) | 32 |
6 | \(2^{6}\) | 64 |
7 | \(2^{7}\) | 128 |
8 | \(2^{8}\) | 256 |
9 | \(2^{9}\) | 512 |
10 | \(2^{10}\) | 1 024 |
11 | \(2^{11}\) | 2 048 |
12 | \(2^{12}\) | 4 096 |
13 | \(2^{13}\) | 8 192 |
14 | \(2^{14}\) | 16 384 |
15 | \(2^{15}\) | 32 768 |
16 | \(2^{16}\) | 65 536 |
24 | \(2^{24}\) | 16 777 216 |
32 | \(2^{32}\) | 4 294 967 296 |
64 | \(2^{64}\) | 18 446 744 073 709 551 616 |
Remarque
Connaître les premières puissances de 2 (ou au moins avoir une idée de leur valeur) permet souvent de gagner du temps quand on fait de l'informatique, parce qu'on y a souvent affaire.
De ce fait, la plupart des informaticiens connaissent bien les puissances de 2. Personnellement, en écrivant ce tableau, je les connaissais jusqu'à \(2^{16}\), même si j'ai un peu hésité pour \(2^{15}\)
On a déjà vu comment transformer un nombre en base 2 en un nombre en base 10. Voyons comment passer un nombre en base 10 dans la base 2.
Conversions par soustractions
La première méthode est la plus simple et aussi la plus rapide si vous connaissez bien vos puissances de 2.
Soit m un nombre en base 10
On fait n = m
tant que n > 0:
p = la plus grande puissance de 2 inférieure à n
on écrit l'exposant de p quelque part
n = n - p
On reconstruit m en base 2 en écrivant 1 aux positions
egales aux exposants trouvés et 0 ailleurs
Exemple : \(437_{10}\)
On cherche les exposants :
\(n\) | \(p\) | exposant | \(n - p\) | mémoire |
---|---|---|---|---|
437 | 256 | 8 | 181 | 8 |
181 | 128 | 7 | 53 | 8, 7 |
53 | 32 | 5 | 21 | 8, 7, 5 |
21 | 16 | 4 | 5 | 8, 7, 5, 4 |
5 | 4 | 2 | 1 | 8, 7, 5, 4, 2 |
1 | 1 | 0 | 0 | 8, 7, 5, 4, 2, 0 |
0 | stop | stop | stop | 8, 7, 5, 4, 2, 0 |
On reconstruit en base 2 :
Position | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Chiffre | 1 | 1 | 0 | 1 | 1 | 0 | 1 | 0 | 1 |
Donc \(437_{10} = 110110101_{2}\)
Exercice : base 10 vers base 2 par soustractions
Déterminez la représentation de \(171_{10}\) en base 2.
Executez l'algorithme à la main à l'aide de tableaux comme montré dans le cours.
Exposants :
\(n\) | \(p\) | exposant | \(n - p\) | mémoire |
---|---|---|---|---|
171 | 128 | 7 | 43 | 7 |
43 | 32 | 5 | 11 | 7, 5 |
11 | 8 | 3 | 3 | 7, 5, 3 |
3 | 2 | 1 | 1 | 7, 5, 3, 1 |
1 | 1 | 0 | 0 | 7, 5, 3, 1, 0 |
On reconstruit en base 2 :
Position | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Chiffre | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 1 |
\(171_{10} = 10101011_{2}\)
Conversions par divisions
L'autre méthode de conversion est plus rapide si on n'est pas à l'aise avec les puissance de 2. Elle fait appel à des divisions euclidiennes successives.
Rappel : une division euclidienne est une division entre deux nombres entiers, qui produit un reste.
Par exemple, 11 divisé par 2 fait 5 et il reste 1. On dit que 11 est le dividende, 2 le diviseur, 5 le quotient et 1 le reste.
Notre méthode est donc la suivante :
Soit m un nombre en base 10
n = m
tant que n > 0:
On divise n par 2, et on note le reste
n = quotient
On reconstitue le nombre en base 2 en lisant
les restes en sens inverse.
Exemple avec \(437_{10}
\)
\(n\) | quotient | reste |
---|---|---|
437 | 218 | 1 |
218 | 109 | 0 |
109 | 54 | 1 |
54 | 27 | 0 |
27 | 13 | 1 |
13 | 6 | 1 |
6 | 3 | 0 |
3 | 1 | 1 |
1 | 0 | 1 |
0 | stop | stop |
Donc \(437_{10} = 110110101_{2}\)
Exercice : base 10 vers base 2 par divisions
Utilisez la méthode des divisions pour trouver la représentation en base 2 de \(171_{10}\).
Vous pouvez vous aider d'un tableau comme celui montré dans le cours.
\(n\) | quotient | reste |
---|---|---|
171 | 85 | 1 |
85 | 42 | 1 |
42 | 21 | 0 |
21 | 10 | 1 |
10 | 5 | 0 |
5 | 2 | 1 |
2 | 1 | 0 |
1 | 0 | 1 |
0 | stop | stop |
\(171_{10} = 10101011_{2}\)
Un peu de vocabulaire
Un chiffre dans un nombre codé en base 2 est un bit. \(1011_2\) est donc sur 4 bits. Son symbole est un b minuscule.
Un groupe de 8 bits s'appelle un octet. \(11001011_2\) est un octet. Son symbole est un o minuscule.
La plus petite unité adressable dans un ordinateur (qu'on peut stocker et accéder en une fois dans la mémoire) est un byte (se prononce bayte). Un byte n'est pas forcément de taille de 8 bits, mais l'usage moderne réfère généralement à un byte comme étant une unité composée de 8 bits2. Son symbole est un B majuscule.
Remarque
Il existe deux grandes manière de représenter de grande quantités d'octets (ou de bits). La première utilise les préfixes du système international3 (kilo-, méga-, ...). La seconde utilise des préfixes binaires4 (kibi-, mébi-, ...). Comparons les.
|
|
Différence binaire / SI | ||||
unité | notation | nombre d'octets | unité | notation | nombre d'octets | pourcentage |
Kilooctet | ko | 103 | Kibioctet | Kio | 210 | 2% |
Mégaoctet | Mo | 106 | Mébioctet | Mio | 220 | 5% |
Gigaoctet | Go | 109 | Gibioctet | Gio | 230 | 7% |
Téraoctet | To | 1012 | Tébioctet | Tio | 240 | 10% |
Il faut parfois faire attention à celà, un disque dur avec 1To de capacité aura 10% de capacité de moins qu'un disque dur de 1 Tio !
Dans une donnée binaire, pour la position, on parle souvent de poids. Les bits de poids fort sont ceux avec une position élevée (le plus à gauche), alors que ceux les plus a droite sont les bits de poids faible.
L'essentiel
Au programme
Un nombre peut être représenté dans différentes bases, en fonction du nombre de valeurs différentes que peut avoir un chiffre. Notre système usel est la base 10, utilisant des chiffres de 0 a 9.
Les ordinateurs manipulent des nombres en base 2, représentés avec uniquement des 0 et des 1.
Le passage de la base 2 à la base 10 se fait en additionnant chaque chiffre du nombre multiplié par la valeur de son paquet :
Pour passer de la base 10 à la base 2, il y a deux méthodes : par soustractions successives et par divisions successives. Il vous faut en connaître au moins une des deux. Voir cours pour les détails de chaque méthode.
Dans un ordinateur, les chiffres de la base 2, donc 0 et 1, sont appelés bits. Les bits sont généralement groupés par 8 (octet), 16, 32 ou 64. Par exemple, 25 sur 8 bits se code \(00011001_2\).
La valeur maximale d'un entier naturel que l'on peut représenter sur \(n\) bits est \(2^n - 1\). Par exemple, sur 8 bits la valeur maximale est 255.
-
Ces trois noms ont étés inventés. Evitez de les utiliser dans une copie d'examen. Toutes mes félicitations pour avoir consulté les sources ! ↩↩↩
-
"ISO/IEC 2382:2015 Information technology — Vocabulary" https://www.iso.org/standard/63598.html. Note 2 to entry: The number of bits in a byte is usually 8 ↩
-
https://fr.wikipedia.org/wiki/Pr%C3%A9fixes_du_Syst%C3%A8me_international_d%27unit%C3%A9s ↩
-
https://fr.wikipedia.org/wiki/Pr%C3%A9fixe_binaire ↩