Calculateur signe et valeur absolue : coder et décoder
Ce calculateur de représentation signe et valeur absolue transforme un entier décimal signé en motif binaire de largeur fixe, puis reconvertit ce motif en nombre.
Lancer gratuitement
Contrairement au complément à deux, cette notation réserve exclusivement le bit de poids fort au signe et utilise tous les autres bits pour la valeur absolue. Choisissez une opération, saisissez la valeur et la largeur totale, puis obtenez le bit de signe, les bits de valeur absolue, la valeur numérique, le motif complet et le résultat décodé. Le résultat signale également la représentation particulière du zéro négatif permise par ce système numérique.
Encoder un entier signé
Sélectionnez l’encodage, saisissez un entier en base 10 dans le champ de valeur et choisissez une largeur totale comprise entre 2 et 53 bits. Le calculateur sépare d’abord le signe de la valeur absolue. Une entrée négative produit un bit de signe initial égal à 1, tandis que zéro et les entrées positives produisent un bit initial égal à 0. Il convertit ensuite la valeur absolue en binaire et ajoute des zéros à gauche jusqu’à ce qu’elle occupe exactement un bit de moins que la largeur choisie. Le bit de signe et la valeur complétée forment le motif final. Par exemple, la valeur 37 s’écrit 0100101 sur sept bits ; -37 sur huit bits devient donc 10100101. La position réservée au signe ne permet pas d’étendre les plages positive ou négative. Pour une largeur w, la valeur absolue maximale autorisée est 2 à la puissance w moins 1, puis moins 1. Les entrées hors de cette plage symétrique sont refusées, sans troncature, bouclage ni modification silencieuse. Le résultat convient ainsi aux exercices, à la documentation et aux vecteurs de test.
Décoder un motif binaire
Sélectionnez le décodage et saisissez une valeur binaire comportant exactement autant de chiffres que la largeur choisie. Les zéros initiaux comptent : le motif est donc reçu comme texte et non comme nombre décimal. Le premier chiffre est interprété uniquement comme signe : 0 indique une valeur non négative et 1 une valeur négative. Les autres chiffres constituent une valeur absolue binaire non signée. Si celle-ci n’est pas nulle, le signe est appliqué afin d’obtenir l’entier décimal décodé. La sortie conserve le motif original et distingue aussi sign_bit, magnitude_bits et magnitude, afin que vous puissiez contrôler chaque étape séparément. Ainsi, 10100101 possède un bit de signe 1, des bits de valeur absolue 0100101, une valeur absolue de 37 et une valeur décimale de -37. Le calculateur impose l’égalité entre la largeur déclarée et la longueur réelle. Il refuse les espaces, les préfixes tels que 0b, les séparateurs et tout chiffre autre que 0 ou 1, ce qui évite une réponse apparemment correcte issue d’une séquence ambiguë.
Comprendre la plage et le zéro négatif
La représentation signe et valeur absolue est facile à lire, car le signe est stocké séparément, mais son organisation entraîne des conséquences différentes de celles du complément à deux. La plage numérique est symétrique : un motif de huit bits représente les valeurs ordinaires de -127 à 127, et non de -128 à 127. Il existe aussi deux codages du zéro numérique. Des bits tous nuls représentent le zéro positif ; un bit de signe égal à 1 suivi uniquement de bits de valeur absolue nuls représente le zéro négatif. Les deux se décodent en valeur numérique 0, si bien que le champ negative_zero indique explicitement la représentation reçue. Cette distinction est utile pour étudier d’anciens formats informatiques, la notion de signe en virgule flottante, des exemples pédagogiques ou des exercices matériels où le motif lui-même compte. Le calculateur ne convertit jamais implicitement cette notation en complément à deux. Si un système source emploie une autre représentation signée, identifiez-la avant d’interpréter ses bits. Pour des comparaisons fiables, conservez la même largeur dans toute une série de calculs : le remplissage modifie le motif complet, mais pas la valeur absolue ni l’entier décodé.
Cas d’usage
Vérifier des exercices de logique numérique
Contrôlez les bits de signe, le remplissage, les plages représentables et les réponses décodées pour une largeur donnée.
Créer des vecteurs de test déterministes
Produisez des motifs exacts et des valeurs intermédiaires structurées pour tester un encodeur ou un décodeur.
Examiner d’anciens formats numériques
Interprétez des motifs enregistrés tout en préservant la distinction utile entre zéro positif et zéro négatif.
Questions fréquentes
Quel est le coût d’un calcul par API ?
Chaque requête API coûte $0.002. Le même calcul déterministe est aussi disponible gratuitement dans votre navigateur.
Quelles largeurs de bits sont acceptées ?
Vous pouvez choisir toute largeur totale comprise entre 2 et 53 bits, bit de signe inclus.
Pourquoi la plage est-elle plus petite qu’en complément à deux ?
Un bit ne stocke que le signe et les autres stockent la valeur absolue ; sur huit bits, celle-ci est donc limitée à 127.
Comment le zéro négatif est-il traité ?
Un motif dont le bit de signe vaut 1 et dont la valeur absolue est entièrement nulle se décode en 0 et renvoie negative_zero à vrai.
Puis-je inclure un préfixe 0b ou des espaces ?
Non. Pour le décodage, la valeur doit contenir exactement le nombre demandé de chiffres binaires, sans préfixe, espace ni séparateur.
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/elec/signed-magnitude \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"operation":"encode","value":"-37","bit_width":8}'const res = await fetch("https://api.kit.forhosting.com/elec/signed-magnitude", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"operation": "encode",
"value": "-37",
"bit_width": 8
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/elec/signed-magnitude",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"operation": "encode",
"value": "-37",
"bit_width": 8
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/elec/signed-magnitude", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"operation":"encode","value":"-37","bit_width":8}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"operation":"encode","value":"-37","bit_width":8}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/elec/signed-magnitude", 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
{
"operation": "encode",
"value": "-37",
"bit_width": 8
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "elec.signed_magnitude",
"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.
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. |