Calcul complément à deux

Ce calcul complément à deux convertit les entiers signés en binaire et inversement. Exemple : −42 s’écrit 1101 0110 sur 8 bits.

Source : Hennessy/Patterson, Computer Organization and Design, Kap. „Signed and Unsigned Numbers“ (Zweierkomplement). Mise à jour : .

Entier signé. Les séparateurs de milliers sont acceptés (1 024).
Ma boîte à outilsVos saisies sont enregistrées uniquement dans ce navigateur.

Résultat

Résultat
-42 = 1101 0110 (complément à deux, 8 bits)
Toutes les représentations
GrandeurValeur
Valeur décimale-42
Complément à deux1101 0110
Représentation en complément à un1101 0101
Hexadécimal0xD6
Plage de valeurs-128 … 127
Valeur absolue en binaire0010 1010
Étapes du calcul
  • Valeur absolue |-42| en binaire (8 bits) : 0010 1010.
  • Inverser tous les bits (complément à un) : 1101 0101.
  • Ajouter 1 (complément à deux) : 1101 0110.
Le complément à deux est la façon usuelle de stocker les entiers signés. Il n’a qu’un seul zéro et couvre −2^(n−1) à 2^(n−1) − 1.

Comment le calcul est fait

Le complément à deux est la représentation standard des entiers négatifs en informatique. Le bit de poids fort sert de signe, et addition et soustraction utilisent le même circuit, sans cas particulier.

Principe de la conversion

Un nombre non négatif s’écrit en binaire comme d’habitude, complété par des zéros à gauche. Pour un nombre négatif : écrire la valeur absolue en binaire, inverser tous les bits (complément à un) et ajouter 1. Inversement : si le bit de poids fort est à 1, la valeur est u − 2ⁿ, où u est la suite de bits lue comme un entier non signé. Avec n bits, on représente −2^(n−1) à 2^(n−1) − 1, soit -128 à 127 sur 8 bits.

Exemple

−42 sur 8 bits : la valeur absolue 42 s’écrit 0010 1010. L’inversion donne 1101 0101 (complément à un), l’ajout de 1 donne 1101 0110, soit D6 en hexadécimal. Vérification : 1101 0110 lu comme entier non signé vaut 214, et 214 − 256 = -42. La suite 1000 0000 représente -128, le plus petit entier sur 8 bits ; +128 n’y tient plus. Sur 16 bits, −1 vaut FFFF en hexadécimal. Lu en complément à un, 1101 0110 vaudrait -41.

Questions fréquentes

Comment convertir un nombre négatif en complément à deux ?

Écrire la valeur absolue en binaire, inverser tous les bits et ajouter 1. Pour −42 sur 8 bits : 0010 1010 → 1101 0101 → 1101 0110.

Quelle différence entre complément à un et complément à deux ?

Le complément à un inverse seulement les bits ; le complément à deux ajoute ensuite 1. Il reste un seul zéro et le calcul fonctionne sans règle spéciale.

Quelle plage couvre un octet en complément à deux ?

Sur 8 bits de -128 à 127, soit 256 valeurs différentes.

Sources et références juridiques

Dernière mise à jour : · Principes éditoriaux

Outils similaires