Représentation des entiers relatifs
Principe de la méthode du complément à deux
Pour coder un entier relatif en binaire, une méthode naïve consisterait à réserver un bit de signe, et à utiliser les autres bits pour coder le nombre normalement. Le problème de cette méthode est que les opérations d'addition et de soustraction sur les nombres en binaire ne fonctionneraient pas.
La logique utilisée en réalité est la suivante. Supposons que l'on cherche à coder les nombres sur 4 bits. Le premier bit est reservé pour le signe : 0 pour les nombres positifs et 1 pour les nombres négatifs.
- On part de (0)10 = (0000)2
- Si on lui ajoute 1, on obtient (1)10 = (0001)2, normalement.
- On peut continuer d'ajouter 1 jusqu'à (0111)2 = (7)10.
- On ne peut pas enlever 1 à (0000)2, alors on part du principe que l'on fait une boucle, et qu'on repart du maximum : (-1)10 = (1111)2
- On peut alors enlever 1 à nouveau : (1110)2 = (-2)10
- Et ainsi de suite jusqu'à (1000)2 = (-8)10
Cette méthode s'appelle le complément à deux.
| Binaire | Décimal |
|---|---|
| 0111 | 7 |
| 0110 | 6 |
| 0101 | 5 |
| 0100 | 4 |
| 0011 | 3 |
| 0010 | 2 |
| 0001 | 1 |
| 0000 | 0 |
| 1111 | -1 |
| 1110 | -2 |
| 1101 | -3 |
| 1100 | -4 |
| 1011 | -5 |
| 1010 | -6 |
| 1001 | -7 |
| 1000 | -8 |
Remarque
Il est indispensable de préciser le nombre de bits utilisés pour coder des entiers relatifs, et de bien écrire les 0 de poids fort.
En effet, (0111)2 est égal à (7)10 en complément à deux sur 4 bits, mais (111)2 est égal à (-1)10 en complément à deux sur 3 bits
Conversions vers la base 10
Pour convertir facilement un nombre écrit en base 10 :
- Les nombres positifs sont codés normalement, on peut donc les convertir facilement. Il faut juste veiller à ajouter les 0 nécessaires.
- Pour coder un nombre négatif :
- On part de la valeur absolue que l'on convertit en binaire ;
- on inverse tous les bits;
- on ajoute 1 au résultat obtenu.
Méthode
Exemple sur 8 bits :
N = (120)10 sera codé normalement : (0111 1000)2
N = -120 sera codé en appliquant le complément à deux :
- On part de (0111 1000)2
- on inverse tous les bits. On obtient (1000 0111)2.
- On ajoute 1 au résultat. On obtient (1000 1000)2.
Remarques
- Sur N bits, on peut coder jusqu’à 2N entiers relatifs (De -2N-1 à 2N-1-1).
- Le bit de poids fort indique le signe de l’entier relatif : 0 pour un nombre positif, et 1 pour un nombre négatif.
- Le complément à deux fonctionne dans les deux sens : Il faut faire les mêmes opérations (inversion puis ajout de 1) pour obtenir le code d’un entier positif à partir du nombre négatif.

