Convertisseur complément à deux
-5 sur 8 bits s'écrit 11111011, le motif exact que contient un registre, et 11111011 redonne -5. Les valeurs qui ne tiennent pas dans la largeur choisie, comme 128 sur 8 bits, sont refusées au lieu de reboucler. 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
- Mode de calcul
- To binary
- Nb de bits
- 8
- Binaire
- 11111011
- Non signé
- 251
- Min.
- -128
- Max.
- 127
Le complément à deux est la manière standard dont les ordinateurs modernes stockent les entiers signés sur un nombre fixe de bits. Une valeur positive conserve sa forme binaire ordinaire complétée à gauche jusqu’à la largeur choisie ; une valeur négative est stockée comme le résidu modulaire de cet entier modulo deux à la puissance de la largeur, de sorte que le bit de poids fort agit comme indicateur de signe sans champ magnitude-signe séparé. Ce convertisseur prend un entier signé et une largeur de bits (huit, seize ou trente-deux) et renvoie la chaîne de bits exacte qu’un registre contiendrait, ou l’inverse : un motif de bits et une largeur deviennent la valeur décimale signée. Le dépassement hors de la plage légale pour cette largeur est rejeté au lieu d’envelopper en silence, ce qui garde honnêtes les corrigés et les notes de microprogramme.
Comment fonctionnent l’encodage et le décodage en complément à deux
Fixez une largeur de bits w d’au moins deux. Les entiers signés qui tiennent sont tous les entiers de moins deux à la puissance w moins un jusqu’à plus deux à la puissance w moins un, moins un. Zéro est tous les bits à zéro.
Une valeur non négative dans la plage s’écrit en chiffres binaires ordinaires et se complète de zéros à gauche jusqu’à exactement w bits. Une valeur négative n s’encode comme le résidu unique de n modulo deux à la puissance w dans ce même intervalle fermé de motifs : de façon équivalente, inversez chaque bit de la valeur absolue écrite sur w bits et ajoutez un, la recette classique « inverser et ajouter un » des cours d’organisation des ordinateurs.
Le décodage inverse la carte : lisez la chaîne de bits comme un entier non signé u entre zéro et deux à la puissance w moins un ; si le bit haut est à zéro, la valeur signée est u ; s’il est à un, c’est u moins deux à la puissance w. Les valeurs doivent rester dans la plage d’entiers sûrs de JavaScript pour que chaque chiffre reste exact à la sérialisation.
Les requêtes qui débordent la largeur — par exemple cent vingt-huit sur huit bits — sont rejetées avec un message clair listant le min et le max autorisés, au lieu d’envelopper vers un négatif erroné qu’un étudiant pourrait croire par accident.
Cas d’usage
Devoirs et TP d’organisation des ordinateurs
Vérifiez l’encodage et le décodage de valeurs signées aux largeurs 8/16/32 bits, y compris les dépassements, contre un seul oracle partagé pour les corrigés.
Documentation firmware et champs de protocole
Documentez les champs de registres signés et les deltas de capteurs comme chaînes de bits exactes en complément à deux à côté des valeurs décimales pour revue et mise en service.
Questions fréquentes
Qu’est-ce que le complément à deux ?
C’est la représentation modulaire des entiers signés sur une largeur fixe w : les non négatifs utilisent le binaire ordinaire ; les négatifs utilisent (n mod 2^w) de sorte que le bit haut marque la moitié supérieure de la plage non signée. Addition et soustraction utilisent alors le même circuit que l’arithmétique modulaire non signée.
Quelle plage tient sur N bits ?
Le complément à deux signé de largeur w contient les entiers de −2^(w−1) à 2^(w−1)−1. Par exemple huit bits contiennent −128 à 127 ; seize bits contiennent −32768 à 32767.
Que se passe-t-il en cas de dépassement ?
Le convertisseur n’enveloppe pas en silence, donc les mauvaises réponses de devoirs et les bogues firmware cachés ne sont pas masqués.
Puis-je convertir dans les deux sens ?
L’aller-retour d’une valeur légale restaure toujours le même entier.
Quel est le coût ?
L’outil navigateur est gratuit et s’exécute en local.
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/fmt/twos-complement \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"mode":"to_binary","bits":8}'const res = await fetch("https://api.kit.forhosting.com/fmt/twos-complement", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"mode": "to_binary",
"bits": 8
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/fmt/twos-complement",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"mode": "to_binary",
"bits": 8
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/fmt/twos-complement", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"mode":"to_binary","bits":8}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"mode":"to_binary","bits":8}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/fmt/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
{
"mode": "to_binary",
"bits": 8
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "fmt.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
Le tarif des appels API réussis est la base publiée de $0.002 par élément.
Comment fonctionnent l’encodage et le décodage en complément à deux
L’algorithme est de l’arithmétique entière modulaire pure, sans arrondi en virgule flottante, sans graines aléatoires, sans horodatage ni appels réseau, de sorte que des entrées identiques produisent toujours le même JSON.
Ce que vous envoyez et ce que vous recevez
Vérifications classiques : valeur moins cinq sur huit bits donne un un un un un zéro un un, le décodage inverse de ce motif revient à moins cinq, et quarante-deux positif sur seize bits comme motif complété de zéros. Si vous n’avez besoin que de décimal vers binaire non signé sans largeur fixe, utilisez une autre page plutôt que de surcharger ce contrat de complément à deux. Envoyez un mode obligatoire, to_binary ou from_binary, un champ bits obligatoire pour la largeur de mot de deux à soixante-quatre, et une valeur signée ou une chaîne de bits selon le mode. Pour to_binary fournissez value comme entier JSON ou chaîne de chiffres avec signe optionnel ; les alias n, number, integer et signed sont acceptés. Pour from_binary fournissez binary comme chaîne de zéros et uns de longueur bits ; un préfixe zero-b optionnel et les espaces internes sont retirés. Mode ou bits manquants, valeurs non entières, caractères non binaires, mauvaise longueur, NaN, Infinity et dépassement hors de la plage de complément à deux échouent avec invalid_input et ne sont pas facturés. En succès la réponse renvoie mode et bits, la valeur signée, le motif binaire exact de longueur bits, le résidu non signé, le min et max légaux de la largeur, et method égal à twos_complement. Le tarif des appels API réussis est la base publiée de $0.002 par élément ; les échecs de validation ne consomment pas le solde prépayé.
Où les convertisseurs de complément à deux apparaissent dans le travail réel
Les cours d’informatique et de conception numérique introduisent le complément à deux lorsque les étudiants rencontrent les registres signés, les drapeaux d’ALU et l’idée que la soustraction est l’addition de l’inverse modulaire ; un oracle fiable qui renvoie le motif de bits exact et la plage légale accélère les corrigés et les démos de laboratoire sans formules fragiles en tableur. La documentation de microprogrammes embarqués et de protocoles liste les champs de capteurs signés, les deltas de température et les corrections d’offset stockés en mots de complément à deux de huit ou seize bits à côté de leurs dumps hex pour vérifier le bit de signe d’un coup d’œil. Les notes de compilateurs et de runtimes de langages expliquent comment int8, int16 et int32 se mappent sur des mots machine ; les tuteurs comparent le code d’empaquetage de l’étudiant à une chaîne de bits de référence pour zéro, moins un, le minimum négatif et le maximum positif de chaque largeur. Comme cette capacité est un moteur de parse pur, le tarif API est la base publiée de $0.002 par élément réussi et l’échec de validation ne consomme pas le solde. Traitez les chaînes binaires non signées sans largeur fixe, les dumps hex seuls et les motifs de bits IEEE en virgule flottante comme des intentions de recherche distinctes avec leurs propres pages, plutôt que d’étirer ce convertisseur à largeur fixe signée au-delà de sa portée honnête.
Cas d'intégration
Fixtures de test pour le code d’empaquetage
Générez des motifs de bits golden et des contrôles de décodage inverse pour les tests unitaires de sérialiseurs int8/int16 sans compter les bits à la main.