Calcolatore segno e modulo: codifica e decodifica
Questo calcolatore per la rappresentazione in segno e modulo converte un intero decimale con segno in una sequenza binaria a larghezza fissa e riconverte la sequenza in un numero.
Esegui gratis nel browser
Diversamente dal complemento a due, riserva il bit più significativo esclusivamente al segno e utilizza tutti i bit rimanenti per il valore assoluto. Selezioni un’operazione, indichi il valore e la larghezza totale in bit: otterrà il bit di segno, i bit del modulo, il modulo numerico, la sequenza completa e il valore decodificato. Il risultato identifica inoltre la speciale rappresentazione dello zero negativo consentita da questo sistema numerico.
Come codificare un intero con segno
Selezioni la codifica, inserisca un intero in base 10 nel campo del valore e scelga una larghezza totale compresa tra 2 e 53 bit. Il calcolatore separa innanzitutto il segno dal modulo. Un valore negativo produce un bit di segno iniziale pari a 1, mentre zero e valori positivi producono un bit iniziale pari a 0. Successivamente converte il modulo in binario e aggiunge zeri a sinistra finché il valore occupa esattamente un bit in meno rispetto alla larghezza selezionata. Il bit di segno e il modulo completato vengono uniti nella sequenza finale. Per esempio, il modulo 37 è 0100101 su sette bit; pertanto -37 su otto bit diventa 10100101. La posizione del segno non può ampliare l’intervallo positivo o negativo. Con una larghezza w, il massimo modulo ammesso è 2 elevato a w meno 1, e poi meno 1. I valori esterni a questo intervallo simmetrico vengono rifiutati anziché troncati, riportati ciclicamente nell’intervallo o modificati senza avviso. Il risultato è quindi adatto a esercizi, documentazione e vettori di prova.
Come decodificare una sequenza binaria
Selezioni la decodifica e inserisca un valore binario con un numero di cifre esattamente uguale alla larghezza scelta. Gli zeri iniziali sono significativi, quindi la sequenza viene acquisita come testo e non come numero decimale. La prima cifra viene interpretata soltanto come segno: 0 indica un valore non negativo, mentre 1 indica un valore negativo. Le cifre restanti vengono lette come modulo binario senza segno. Se il modulo non è zero, viene applicato il segno per ottenere l’intero decimale decodificato. L’output conserva la sequenza originale e separa sign_bit, magnitude_bits e magnitude, consentendo a Lei di verificare ogni fase in modo indipendente. La sequenza 10100101, per esempio, ha bit di segno 1, bit del modulo 0100101, modulo 37 e valore decimale -37. Il calcolatore richiede che la larghezza dichiarata coincida con la lunghezza effettiva. Rifiuta spazi, prefissi come 0b, separatori e cifre diverse da 0 o 1, evitando risultati apparentemente validi ottenuti da sequenze ambigue.
Comprendere l’intervallo e lo zero negativo
La rappresentazione in segno e modulo è facile da leggere perché memorizza il segno separatamente, ma questa struttura ha conseguenze diverse dal complemento a due. L’intervallo numerico disponibile è simmetrico: una sequenza di otto bit rappresenta i valori ordinari da -127 a 127, non da -128 a 127. Esistono inoltre due codifiche dello zero numerico. Una sequenza composta interamente da zeri rappresenta lo zero positivo; un bit di segno pari a 1 seguito esclusivamente da bit del modulo pari a zero rappresenta lo zero negativo. Entrambe vengono decodificate nel valore numerico 0, perciò il campo negative_zero registra esplicitamente quale rappresentazione è stata fornita. La distinzione è utile nell’analisi di formati informatici storici, concetti di segno in virgola mobile, esempi didattici o esercizi hardware in cui conta la sequenza stessa. Il calcolatore non converte mai implicitamente tra segno e modulo e complemento a due. Se il sistema di origine utilizza un’altra rappresentazione con segno, la identifichi prima di interpretare i bit. Per confronti affidabili, mantenga la stessa larghezza in tutti i calcoli: il riempimento cambia la sequenza completa, ma non il modulo né l’intero decodificato.
Casi d'uso
Verificare esercizi di logica digitale
Controlli bit di segno, riempimento del modulo, intervalli rappresentabili e risposte decodificate a una larghezza definita.
Creare vettori di prova deterministici
Generi sequenze esatte in segno e modulo e valori intermedi strutturati per testare codificatori o decodificatori.
Esaminare formati numerici legacy
Interpreti sequenze memorizzate conservando la distinzione significativa tra zero positivo e zero negativo.
Domande frequenti
Quanto costa un calcolo tramite API?
Ogni richiesta API costa $0.002. Lo stesso calcolo deterministico è disponibile gratuitamente anche nel Suo browser.
Quali larghezze in bit sono supportate?
Può scegliere qualsiasi larghezza totale compresa tra 2 e 53 bit, incluso il bit di segno.
Perché l’intervallo è minore rispetto al complemento a due?
Un bit memorizza soltanto il segno e gli altri il modulo; pertanto, su otto bit il modulo massimo è 127.
Come viene gestito lo zero negativo?
Una sequenza con bit di segno 1 e modulo interamente nullo viene decodificata numericamente come 0 e restituisce negative_zero come vero.
Posso inserire il prefisso 0b o degli spazi?
No. Per la decodifica, il valore deve contenere esattamente il numero richiesto di cifre binarie, senza prefissi, spazi o separatori.
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo 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)Esempio di richiesta
{
"operation": "encode",
"value": "-37",
"bit_width": 8
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "elec.signed_magnitude",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |