Complément à deux
Sur 8 bits, −5 devient 11111011 et +5 devient 00000101. Saisissez un entier signé et une largeur de mot de 2 à 64 bits et obtenez son motif exact en complément à deux ; une valeur qui ne tient pas est refusée, jamais repliée. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- Valeur
- -5
- Bits
- 8
- Binaire
- 11111011
- Non signé
- 251
- Min
- -128
- Max
- 127
Le complément à deux est la représentation qu’emploient les processeurs modernes pour les entiers signés : une chaîne de bits à largeur fixe dont le bit de poids fort est le signe et dont les bits restants complètent un encodage modulaire de la valeur. Cette calculatrice de complément à deux accepte un entier signé et une largeur de bits, puis renvoie le mot binaire exact pour cette largeur. Les valeurs non négatives deviennent les bits de magnitude ordinaires, complétés de zéros à gauche. Les valeurs négatives deviennent le résidu de l’entier modulo deux à la puissance de la largeur, construction classique « inverser et ajouter un » enseignée dans tout cours d’organisation des ordinateurs.
Ce que signifie le complément à deux et comment les bits sont produits
Le complément à deux est la représentation qu’emploie presque chaque CPU pour les entiers signés. Pour un mot de largeur w bits, la plage représentable est l’intervalle fermé allant de moins deux à la puissance w moins un jusqu’à deux à la puissance w moins un, moins un. Le bit de poids fort est le bit de signe : zéro signifie une valeur non négative stockée comme le binaire non signé ordinaire de cette magnitude, complété à gauche de zéros jusqu’à exactement w caractères.
Un un dans le bit de signe signifie une valeur négative. Encoder un entier négatif n revient à prendre le résidu mathématique de n modulo deux à la puissance w : inverser chaque bit de la magnitude positive et ajouter un, puis conserver exactement w bits. Cette vue modulaire explique pourquoi soustraire un de zéro produit une chaîne de uns, qui se décode comme moins un, et pourquoi la valeur la plus négative sur w bits est un un suivi de w moins un zéros.
Cette calculatrice applique cette identité avec une arithmétique modulaire BigInt afin que chaque bit soit exact pour des largeurs de deux à soixante-quatre. Elle n’enveloppe pas les valeurs qui débordent comme le ferait un registre matériel : si l’entier signé ne peut pas vivre dans la largeur choisie, la requête échoue au lieu de produire en silence un mot qui appartient à un autre entier.
Les étudiants peuvent ainsi vérifier leurs devoirs face à une définition qui concorde avec les manuels, et l’automatisation peut faire confiance à un succès comme encodage légal pour la largeur déclarée. Cinq positif sur huit bits est 00000101 ; cinq négatif sur huit bits est 11111011 ; zéro est une chaîne de zéros ; moins un est une chaîne de uns. Ces quatre jalons suffisent à vérifier toute largeur ultérieure par la même règle modulaire.
Où un encodeur de complément à deux justifie son emploi
Les salles de classe utilisent une calculatrice de complément à deux pour que les apprenants convertissent des valeurs signées de devoirs en mots de huit et seize bits sans inverser à la main un bit de signe et omettre l’étape d’ajouter un qui distingue le complément à deux du complément à un.
Les générateurs d’examen ont besoin d’un oracle déterministe qui refuse cent vingt-huit sur huit bits comme dépassement plutôt que de l’envelopper vers moins cent vingt-huit, car l’enveloppement est un comportement matériel que l’étudiant doit reconnaître comme distinct d’un encodage légal de l’entier d’origine. Les revues de microprogramme embarqué exigent souvent une vérification rapide qu’une constante documentée occupe vraiment la largeur de champ annoncée avant de la ranger dans un registre, un mot de protocole ou un bitfield d’une fiche technique.
Les concepteurs de protocoles comparent le mot renvoyé à un vidage de paquet lorsqu’un champ signé est transmis bit de poids fort en premier. Gardez les requêtes petites, affirmez le champ binary dans les tests, et vous obtenez des mots de complément à deux reproductibles pour devoirs, laboratoires et workers de bord sans dresser une chaîne d’assembleur à vous.
Cas d’usage
Contrôles en classe et devoirs
Convertissez des valeurs signées de feuille d’exercices en mots de complément à deux de huit ou seize bits et confirmez le résultat inverser-et-ajouter-un sans tableau de bits dessiné à la main.
Revues de microprogramme et de protocoles
Vérifiez qu’une constante signée documentée tient vraiment dans la largeur de champ annoncée avant de la ranger dans un registre ou un format de fil.
Questions fréquentes
Que se passe-t-il si l’entier ne tient pas dans la largeur de bits ?
Le point d’accès n’enveloppe pas. Sur huit bits, la plage légale va de −128 à 127, donc 128 est une erreur et non le motif de bits de −128.
Comment une valeur négative est-elle encodée ?
Comme le résidu non négatif de l’entier modulo 2^w, ce qui équivaut à inverser les bits de magnitude et à ajouter un. Moins cinq sur huit bits est 11111011.
Quelles largeurs de bits sont prises en charge ?
Toute largeur entière de 2 à 64. Les largeurs habituelles d’enseignement et de microprogramme sont 8, 16, 32 et 64, pourvu que la valeur reste dans la plage d’entiers sûrs de JavaScript.
Comment convertir un entier signé en complément à deux ?
S'il est positif, on l'écrit en binaire et on complète par des zéros à gauche jusqu'à la largeur choisie. S'il est négatif, on inverse les bits de sa valeur positive et on ajoute un : −5 donne ainsi 11111011 sur 8 bits.
Quelle différence entre complément à un et complément à deux ?
Le complément à un se contente d'inverser chaque bit de la valeur positive ; le complément à deux inverse puis ajoute un. C'est cette étape de plus qui transforme −5 en 11111011 sur 8 bits et fait de −1 une suite de uns.
Outils associés
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/math/twos-complement \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"value":-5,"bits":8}'const res = await fetch("https://api.kit.forhosting.com/math/twos-complement", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"value": -5,
"bits": 8
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/math/twos-complement",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"value": -5,
"bits": 8
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/math/twos-complement", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"value":-5,"bits":8}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"value":-5,"bits":8}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/math/twos-complement", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"value": -5,
"bits": 8
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "math.twos_complement",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Limites
min_bits | 2 |
max_bits | 64 |
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |
Notes techniques
Si l’entier ne tient pas dans la plage signée de la largeur choisie, la tâche échoue avec invalid_input au lieu d’envelopper en silence. Les appels API réussis coûtent $0.002 ; une entrée invalide n’est pas facturée.
Contrat d’entrée, plage légale et signalement du dépassement
Le champ value est l’entier signé à encoder. Fractions, notation scientifique, chaînes vides, Infinity et NaN sont rejetés, afin qu’une cellule de tableur défectueuse ne devienne pas un motif de bits erroné. Le champ bits est la largeur du mot, entier de deux à soixante-quatre inclus, ce qui couvre les largeurs d’enseignement habituelles int8, int16, int32 et int64 tout en restant peu coûteux à calculer. Champs manquants, non entiers et un bits hors de deux à soixante-quatre échouent de la même manière et ne sont pas facturés. Le contrat est délibérément fail-closed : envelopper 128 en 10000000 serait un encodage correct de moins cent vingt-huit, non de cent vingt-huit, et ce point d’accès refuse d’estomper cette distinction. Envoyez un objet JSON avec deux champs obligatoires. Il peut être un nombre JSON ou une chaîne de chiffres décimaux avec un signe plus ou moins optionnel. La valeur absolue doit rester dans la plage des entiers sûrs de JavaScript, de sorte que le value renvoyé demeure un nombre JSON exact. Les alias n, integer et number sont acceptés pour value ; width, bit_width et nbits le sont pour bits. En cas de succès, la réponse répète value et bits, renvoie binary comme une chaîne d’exactement bits caractères zéro ou un, renvoie unsigned comme ce même motif interprété comme entier non négatif, et renvoie min et max pour afficher la plage légale à côté de la réponse. Exemple : value égal à moins cinq et bits égal à huit produisent binary 11111011, unsigned deux cent cinquante-et-un, min moins cent vingt-huit et max cent vingt-sept. Si value sort de cette plage, le gestionnaire lève invalid_input et nomme le dépassement, par exemple en indiquant que cent vingt-huit ne tient pas en complément à deux sur huit bits.
Où un encodeur de complément à deux justifie son emploi
Les appels API réussis coûtent le $0.002 publié ; les échecs de validation ne consomment pas le solde ; rien n’est conservé après la réponse.
Cas d'intégration
Notation automatique d’examens et LMS
Notez des items de complément à deux avec un oracle déterministe qui refuse le dépassement comme invalid_input au lieu d’envelopper l’entier dans une autre valeur.
Questions techniques
Comment convertir un entier signé en binaire de complément à deux ?
Envoyez l’entier comme value et la largeur du mot comme bits (2–64). L’API renvoie une chaîne binaire d’exactement autant de caractères 0/1, plus la magnitude non signée et la plage signée légale.
Combien coûte la calculatrice de complément à deux ?
L’outil du navigateur est gratuit. Les requêtes API utilisent le solde prépayé KIT à $0.002 par appel réussi ; une entrée invalide n’est pas facturée.