Convertitore complemento a due
-5 su 8 bit è 11111011, la sequenza esatta contenuta in un registro, e 11111011 torna a dare -5. I valori che non entrano nella larghezza scelta, come 128 su 8 bit, vengono rifiutati invece di ripartire dall'altro estremo. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Esempio risolto
- Valore
- -5
- Modalità di calcolo
- To binary
- N. bit
- 8
- Binario
- 11111011
- Senza segno
- 251
- Min.
- -128
- Max.
- 127
Il complemento a due è il modo standard con cui i computer moderni memorizzano gli interi con segno in un numero fisso di bit. Un valore positivo mantiene la sua forma binaria ordinaria riempita a sinistra fino alla larghezza scelta; un valore negativo è memorizzato come il residuo modulare di quell’intero modulo due elevato alla larghezza, così il bit più significativo agisce come indicatore di segno senza un campo separato di magnitudine e segno. Questo convertitore prende un intero con segno e una larghezza di bit (otto, sedici o trentadue) e restituisce la stringa di bit esatta che un registro conterrebbe, o l’inverso: un pattern di bit e una larghezza diventano il valore decimale con segno. Il superamento fuori dall’intervallo legale per quella larghezza viene rifiutato invece di avvolgersi in silenzio, il che mantiene oneste le chiavi degli esercizi e le note del firmware.
Come funzionano la codifica e la decodifica in complemento a due
Fissi una larghezza di bit w di almeno due. Gli interi con segno che entrano sono tutti gli interi da meno due elevato a w meno uno fino a più due elevato a w meno uno, meno uno. Zero è tutti bit a zero.
Un valore non negativo nell’intervallo si scrive in cifre binarie ordinarie e si riempie di zeri a sinistra fino ad avere esattamente w bit. La decodifica inverte la mappa: legga la stringa di bit come intero senza segno u tra zero e due elevato a w meno uno; se il bit alto è a zero, il valore con segno è u; se è a uno, è u meno due elevato a w. I valori devono restare nell’intervallo di interi sicuri di JavaScript affinché ogni cifra resti esatta in serializzazione.
Le richieste che superano la larghezza — ad esempio centoventotto in otto bit — vengono rifiutate con un messaggio chiaro che elenca min e max ammessi, invece di avvolgersi a un negativo sbagliato a cui uno studente potrebbe fidarsi per errore.
Casi d'uso
Compiti e laboratori di organizzazione dei calcolatori
Verifichi codifica e decodifica di valori con segno a larghezze 8/16/32 bit, inclusi i superamenti, contro un unico oracolo condiviso per le chiavi di risposta.
Documentazione firmware e campi di protocollo
Documenti campi di registri con segno e delta di sensori come stringhe di bit esatte in complemento a due accanto ai valori decimali per revisione e avvio.
Domande frequenti
Che cos’è il complemento a due?
È la rappresentazione modulare degli interi con segno in una larghezza fissa w: i non negativi usano il binario ordinario; i negativi usano (n mod 2^w) così il bit alto marca la metà superiore dell’intervallo senza segno. Addizione e sottrazione usano allora lo stesso circuito dell’aritmetica modulare senza segno.
Quale intervallo entra in N bit?
Il complemento a due con segno di larghezza w contiene interi da −2^(w−1) a 2^(w−1)−1. Ad esempio otto bit contengono −128 a 127; sedici bit contengono −32768 a 32767.
Cosa succede in caso di superamento?
Il convertitore non avvolge in silenzio, così risposte sbagliate ai compiti e bug firmware nascosti non vengono mascherati.
Posso convertire in entrambi i sensi?
L’andata e ritorno di un valore legale ripristina sempre lo stesso intero.
Quanto costa?
Lo strumento del browser è gratuito e gira in locale.
Strumenti correlati
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/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)Esempio di richiesta
{
"mode": "to_binary",
"bits": 8
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "fmt.twos_complement",
"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.
Limiti
min_bits | 2 |
max_bits | 64 |
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. |
Note tecniche
Il prezzo delle chiamate API riuscite è la base pubblicata di $0.002 per elemento.
Come funzionano la codifica e la decodifica in complemento a due
Un valore negativo n si codifica come il residuo unico di n modulo due elevato a w in quello stesso intervallo chiuso di pattern: in modo equivalente, inverta ogni bit del valore assoluto scritto in w bit e aggiunga uno, la ricetta classica «inverti e aggiungi uno» dei corsi di organizzazione dei calcolatori. L’algoritmo è aritmetica intera modulare pura, senza arrotondamento in virgola mobile, senza semi casuali, senza timestamp né chiamate di rete, così input identici producono sempre lo stesso JSON.
Cosa invia e cosa riceve indietro
Controlli classici: valore meno cinque con otto bit mappa a uno uno uno uno uno zero uno uno, la decodifica inversa di quel pattern torna a meno cinque, e quarantadue positivo in sedici bit come pattern riempito di zeri. Se le serve solo decimale-binario senza segno e senza larghezza fissa, usi un’altra pagina invece di sovraccaricare questo contratto di complemento a due. Invii un mode obbligatorio, to_binary o from_binary, un campo bits obbligatorio con la larghezza di parola da due a sessantaquattro, e un valore con segno o una stringa di bit a seconda del mode. Per to_binary fornisca value come intero JSON o stringa di cifre con segno opzionale; si accettano gli alias n, number, integer e signed. Per from_binary fornisca binary come stringa di zeri e uni di lunghezza bits; un prefisso zero-b opzionale e gli spazi interni vengono rimossi. Mode o bits assenti, valori non interi, caratteri non binari, lunghezza errata, NaN, Infinity e superamento fuori dall’intervallo di complemento a due falliscono con invalid_input e non vengono addebitati. In caso di successo la risposta riecheggia mode e bits, il valore con segno, il pattern binario esatto di lunghezza bits, il residuo senza segno, il min e max legali della larghezza, e method impostato a twos_complement. Il prezzo delle chiamate API riuscite è la base pubblicata di $0.002 per elemento; i fallimenti di validazione non consumano il saldo prepagato.
Dove compaiono i convertitori di complemento a due nel lavoro reale
I corsi di informatica e design digitale introducono il complemento a due quando gli studenti incontrano registri con segno, flag ALU e l’idea che la sottrazione sia addizione dell’inverso modulare; un oracolo affidabile che restituisce il pattern di bit esatto e l’intervallo legale accelera le chiavi di risposta e le demo di laboratorio senza formule fragili su fogli di calcolo. La documentazione di firmware embedded e di protocolli elenca campi di sensori con segno, delta di temperatura e correzioni di offset memorizzati in parole di complemento a due a otto o sedici bit accanto ai dump hex per verificare il bit di segno a colpo d’occhio. Note di compilatori e runtime di linguaggi spiegano come int8, int16 e int32 si mappano su parole macchina; i tutor confrontano il codice di packing dello studente con una stringa di bit di riferimento per zero, meno uno, il minimo negativo e il massimo positivo di ogni larghezza. Poiché questa capacità è un motore di parse puro, il prezzo API è la base pubblicata di $0.002 per elemento riuscito e la validazione fallita non consuma saldo. Tratti stringhe binarie senza segno senza larghezza fissa, dump solo hex e pattern di bit IEEE in virgola mobile come intenti di ricerca distinti con le proprie pagine, invece di stirare questo convertitore a larghezza fissa con segno oltre il suo ambito onesto.
Casi di integrazione
Fixture di test per codice di packing
Generi pattern di bit golden e controlli di decodifica inversa per test unitari di serializzatori int8/int16 senza contare i bit a mano.