Conversion

Calculateur de complément à deux

Paramètres
Réinitialiser
Partager le résultat
Enregistrer
Intégrer
Signaler un bug

Partager calculatrice

Ajoutez notre calculatrice gratuite à votre site Web

Source

Veuillez entrer une URL valide. Seules les URLs HTTPS sont prises en charge.

Style

Couleur de focus de la bordure d'entrée, couleur de la case à cocher, couleur de survol des éléments sélectionnés, etc.

Avancé

Veuillez accepter les Conditions d'utilisation.

Aperçu

Enregistrer la calculatrice

Paramètres de la calculatrice

Veuillez saisir une valeur dans la plage autorisée.

Veuillez saisir une valeur dans la plage autorisée.

Veuillez saisir une valeur dans la plage autorisée.

Veuillez saisir une valeur dans la plage autorisée.

Partager calculatrice

Qu’est-ce que le complément à deux?

Le complément à deux est la manière standard dont les ordinateurs stockent les entiers signés — des nombres qui peuvent être positifs ou négatifs — en utilisant un nombre fixe de bits. Au lieu de réserver un symbole distinct pour le signe moins, les nombres négatifs sont codés de sorte que l’addition binaire ordinaire fonctionne directement, sans traitement particulier du signe. Presque tous les processeurs modernes représentent les entiers de cette façon.

Ce calculateur prend un entier décimal et une largeur en bits (8, 16 ou 32 bits) et affiche son motif en complément à deux à la fois en binaire et en hexadécimal.

Comment ça marche?

Pour une largeur choisie de ww bits, chaque valeur est stockée sous la forme d’un motif de bits non signé :

  • Si le nombre nn est non négatif, son motif est simplement le binaire de nn, complété par des zéros initiaux jusqu’à ww bits.
  • Si le nombre nn est négatif, son motif est le binaire de 2w+n2^w + n.

Comme nn est négatif dans le second cas, 2w+n2^w + n est une valeur positive inférieure à 2w2^w, donc elle tient toujours dans ww bits. Le bit de poids fort (le plus à gauche) finit par valoir 11 pour tout nombre négatif et 00 pour tout nombre non négatif — ce bit joue le rôle du signe.

Formule

pattern(n)={nif n02w+nif n<0\text{pattern}(n) = \begin{cases} n & \text{if } n \ge 0 \\ 2^{w} + n & \text{if } n < 0 \end{cases}

Le résultat est ensuite écrit avec exactement ww chiffres binaires (ou w/4w/4 chiffres hexadécimaux).

Exemples résolus

Exemple 1 : un nombre positif

Codez n=5n = 5 sur 88 bits. Comme 505 \ge 0, le motif est simplement 55 en binaire, complété à huit chiffres :

5000001012=0x055 \rightarrow 00000101_2 = \text{0x05}

Exemple 2 : moins un

Codez n=1n = -1 sur 88 bits. Comme 1<0-1 < 0, calculez 28+(1)=2561=2552^8 + (-1) = 256 - 1 = 255 :

255111111112=0xFF255 \rightarrow 11111111_2 = \text{0xFF}

Moins un est toujours une suite ininterrompue de uns, quelle que soit la largeur.

Exemple 3 : moins cinq

Codez n=5n = -5 sur 88 bits. Calculez 28+(5)=2565=2512^8 + (-5) = 256 - 5 = 251 :

251111110112=0xFB251 \rightarrow 11111011_2 = \text{0xFB}

Tableau de référence (8 bits)

DécimalBinaire en complément à deuxHex
5000001010x05
0000000000x00
-1111111110xFF
-5111110110xFB
127011111110x7F
-128100000000x80

Notes

  • Un entier signé sur 88 bits couvre la plage de 128-128 à 127127 ; 1616 bits couvrent de 32,768-32{,}768 à 32,76732{,}767 ; 3232 bits couvrent environ ±2.1\pm 2.1 milliards. Les valeurs en dehors de la plage choisie sont repliées modulo 2w2^w.
  • Le bit initial est le signe : 00 marque un nombre non négatif et 11 marque un nombre négatif.
  • Pour convertir un nombre ordinaire non négatif en binaire sans bit de signe, utilisez le convertisseur de décimal à binaire, ou le convertisseur de systèmes de numération général pour d’autres bases.

FAQ

Combien vaut -1 en complément à deux?

Quelle que soit la largeur, c’est une suite de uns : 11111111211111111_2 (0xFF) pour 8 bits, 111111111111111121111111111111111_2 (0xFFFF) pour 16 bits, et ainsi de suite.

Comment obtenir le complément à deux d’un nombre négatif à la main?

Écrivez la valeur absolue du nombre en binaire, inversez chaque bit, puis ajoutez un. Pour 5-5 sur 8 bits : 55 vaut 0000010100000101, l’inversion donne 1111101011111010, et ajouter un donne 1111101111111011 — le même résultat que 2565=251256 - 5 = 251.

Pourquoi la largeur en bits est-elle importante?

La largeur détermine le nombre de bits qu’occupe le motif et donc la plage de nombres que vous pouvez stocker. La même valeur décimale produit une plus longue suite de zéros ou de uns initiaux à mesure que la largeur augmente.

Signaler un bug

Ce champ est requis.