Introduction
Les ordinateurs manipulent aussi bien des nombres positifs que négatifs. Si les entiers positifs sont naturellement représentés en binaire, coder des entiers négatifs pose un défi technique : il faut une méthode qui soit compatible avec les opérations arithmétiques effectuées par les machines. Le codage le plus efficace et universellement utilisé est le complément à deux, qui permet de représenter les entiers relatifs tout en conservant des circuits d’addition identiques à ceux des entiers positifs. Contrairement à d'autres systèmes plus intuitifs mais plus limités, le complément à deux n’utilise pas un bit de signe explicite, mais une construction binaire cohérente avec l’arithmétique machine.
Représenter les entiers relatifs en binaire
Un entier relatif peut être positif, nul ou négatif. En informatique, ils sont codés sur un nombre fixe de bits : 8, 16, 32 ou 64. Le système du complément à deux permet de représenter ces valeurs de manière compatible avec les opérations classiques comme l’addition ou la soustraction.
Dans ce système :
Si le bit de poids fort (le plus à gauche) est 0, le nombre est positif ou nul.
S’il est 1, le nombre est négatif, mais ce bit n’est pas un indicateur de signe direct : il fait partie d’un tout.
Exemple sur 8 bits :
00001111₂ = 15₁₀
11111111₂ = −1₁₀
10000000₂ = −128₁₀
À retenir
En complément à deux, les entiers sont représentés sur un nombre fixe de bits. Le bit de gauche détermine la négativité, sans être un simple indicateur de signe.
Complément à deux : principe et construction
Le complément à deux d’un entier négatif est une transformation binaire qui permet d’encoder un opposé sans changer les règles de calcul.
Pour coder un entier négatif sur n bits :
Écrire sa valeur absolue en binaire sur n bits.
Inverser tous les bits (0 devient 1, 1 devient 0).
Ajouter 1 au résultat.
Exemple : coder −5 sur 8 bits
5₁₀ = 00000101₂
Inversion : 11111010₂
Ajout de 1 : 11111011₂
⇒ −5₁₀ = 11111011₂
On peut vérifier que cette représentation est correcte par l’addition :
(−5) + (+5) =
11111011
00000101
\= 00000000 (la retenue finale déborde sur un 9ᵉ bit, ignorée)
→ résultat attendu : 0
Cela fonctionne car le complément à deux assure une continuité arithmétique dans les représentations binaires.
Intervalle des valeurs représentables
Sur n bits, le complément à deux permet de coder les entiers dans l’intervalle :
−2ⁿ⁻¹ à 2ⁿ⁻¹ − 1
Exemples :
8 bits → de −128 à +127
16 bits → de −32 768 à +32 767
À retenir
Le complément à deux permet de représenter les entiers relatifs dans un intervalle asymétrique allant de −2ⁿ⁻¹ à 2ⁿ⁻¹ − 1. Le bit de gauche ne représente pas un signe mais participe à l'encodage complet du nombre.
Décoder un entier en complément à deux
Pour lire un entier codé en complément à deux :
Si le bit de gauche est 0 → on lit le nombre normalement.
Si le bit de gauche est 1 → on :
Inverse les bits
Ajoute 1
Interprète le résultat comme positif
Applique un signe négatif
Exemple : décoder 11111100₂
Bit de gauche = 1 → négatif
Inversion : 00000011
Ajout de 1 : 00000100 → 4
⇒ 11111100₂ = −4₁₀
Ce décodage est utile lorsqu’on analyse directement des données binaires brutes ou des registres mémoire.
À retenir
Un entier en complément à deux se décode en inversant les bits, en ajoutant 1, puis en ajoutant un signe négatif si le bit de gauche est à 1.
Utiliser le complément à deux dans les calculs
Le principal avantage du complément à deux est qu’il permet aux machines d’effectuer des additions binaires standard, même en présence de nombres négatifs.
Exemple : −3 + 5
Sur 8 bits :
−3 = 11111101₂
+5 = 00000101₂
Addition :
11111101
00000101
\= 00000010 → 2₁₀
La somme est exacte, sans traitement spécial.
Débordement et retenue
Quand la somme dépasse la plage des entiers codables, un dépassement de capacité (overflow) peut se produire, mais le bit de retenue hors gabarit est ignoré, car il dépasse les n bits fixés. Cela fait partie du fonctionnement standard des additions binaires sur machines.
À retenir
Le complément à deux simplifie les additions entre entiers relatifs. Même les résultats négatifs sont obtenus sans traitement spécial, grâce à une cohérence mathématique interne.
Conclusion
Le codage en complément à deux est un pilier de l’informatique moderne. Il permet une représentation compacte, cohérente et efficace des entiers relatifs, en facilitant les opérations comme l’addition. Grâce à lui, les ordinateurs peuvent manipuler les nombres négatifs sans modifier les circuits arithmétiques. La maîtrise de ce codage est essentielle pour comprendre la mémoire, les instructions machine et le comportement des programmes au plus bas niveau.
