UKOnline

Système binaire

Avant de s'intéresser à la représentation des types de données vus au chapitre précédent, il faut bien comprendre comment fonctionne le système binaire. Quand il s'agit de compter, les êtres humains utilisent habituellement le système décimal. Dans ce système, il y a dix chiffres (0, 1, ..., 9) que l'on va composer pour construire n'importe quel nombre. Le système utilisé pour écrire un nombre se base sur une notation positionnelle, c'est-à-dire qu'un chiffre d'un nombre sera multiplié par un facteur différent en fonction de sa position dans le nombre. Ce facteur correspond à une puissance de la base utilisée. Le système décimal correspond à un système en base 10. Prenons par exemple le nombre 9012 et décortiquons-le comme illustré sur la figure 1.

Exemple base 10
Décomposition du nombre 9102 exprimé en base 10.

On a donc 2 unités ($2 \cdot 10^0$), une dizaine ($1 \cdot 10^1$), aucune centaine ($0 \cdot 10^2$) et enfin neuf milliers ($9 \cdot 10^3$). Le nombre représenté correspond donc à :

$$2 \cdot 10^0 + 1 \cdot 10^1 + 0 \cdot 10^2 + 9 \cdot 10^3 = 2 + 10 + 9000 = 9012$$

Lorsqu'on compte en décimal, on commence par les dix chiffres, puis une fois arrivé au dernier chiffre (c'est-à-dire 9), on ajoute une dizaine et on remet les unités à zéro (c'est-à-dire qu'on passe à 10). On continue ensuite d'augmenter les unités jusqu'à atteindre le dernier chiffre (on est donc à 19) et on recommence la même manipulation en augmentant les dizaine de un et en remettant les unités à zéro (on arrive à 20).

Dans le système binaire, il n'y a que les deux chiffres 0 et 1. Il s'agit d'un système en base 2. Lorsqu'on compte en binaire, on commence donc par 0 puis 1. Ensuite, comme on a fait le tour de tous les chiffes, on ajoute une unité au rang supérieur et on repart à zéro, ce qui nous mène à 10. On continue ensuite d'augmenter les unités pour avoir 11, et on continue ainsi... comme illustré sur la figure 2.

Compter en base 2
Compter en base 2.

Lorsqu'on écrit un nombre en binaire, on fait donc comme lorsqu'on écrit dans le système décimal si ce n'est qu'on est limité aux chiffres 0 et 1, et que les positions dans le nombre correspondent à des puissances de 2. La figure 3 montre un nombre binaire décortiqué.

Exemple base 2
Décomposition du nombre 101101 exprimé en base 2.

On peut connaitre la valeur décimale correspondant à ce nombre en effectuant le calcul suivant :

$$1 \cdot 2^0 + 0 \cdot 2^1 + 1 \cdot 2^2 + 1 \cdot 2^3 + 0 \cdot 2^4 + 1 \cdot 2^5 = 1 + 4 + 8 + 32 = 45$$

Lorsqu'on mêle des nombres écrits dans plusieurs bases, il faut pouvoir noter la base que l'on considère. En effet, 10 est-il un nombre binaire ou décimal ? Dès lors, on va noter en indice la base que l'on considère. On pourra va par exemple écrire $(101101)_2 = (45)_{10}$ pour signifier que le nombre binaire 101101 correspond au nombre décimal 45.

Du binaire au décimal

On vient de voir comment passer d'un nombre écrit en binaire à son équivalent en décimal. On examine les différents chiffres du nombre binaire, appelés bits, et on ne prend en compte que ceux qui valent 1. On calcule ensuite la somme de puissances de 2 tels que les exposants correspondent à la position des bits à 1, sachant que le bit tout à droite est celui en position 0 appelé bit de poids faible. Le bit tout à droite est par ailleurs appelé bit de poids fort.

Formellement, si on a un nombre binaire $B = b_k...b_1b_0$, et qu'on note par $b_i$ la valeur du bit en position $i$, on peut calculer la valeur décimale correspondante avec la formule suivante :

$$(B)_2 = \sum_{i = 0}^k b_i \cdot 2^i = b_0 \cdot 2^0 + b_1 \cdot 2^1 + ... + b_k \cdot 2^k$$

Du décimal au binaire

Voyons maintenant l'opération inverse, à savoir convertir un nombre décimal en binaire. La procédure à suivre est assez systématique : on va diviser successivement le nombre décimal à convertir par 2, et à chaque fois noter le reste de la division entière. Voyons par exemple comment convertir le nombre $(117)_{10}$ en décimal; les étapes étant reprises à la figure 4.

Conversion décimal-binaire
Conversion du nombre $(101101)_2$ en décimal.

On part donc du nombre décimal 117 et on note le reste de la division par deux qui vaut 1. On divise ensuite 117 par deux pour passer à l'étape suivante, ce qui donne 58. On continue ainsi jusqu'à atteindre 0. On lit ensuite les restes successifs qu'on a noté à l'envers, c'est-à-dire en partant du bas. On trouve donc que $(117)_{10} = (1110101)_2$.