Calcolatore del complemento a due
Che cos’è il complemento a due?
Il complemento a due è il modo standard con cui i computer memorizzano gli interi con segno — numeri che possono essere positivi o negativi — usando un numero fisso di bit. Invece di riservare un simbolo separato per il segno meno, i numeri negativi sono codificati in modo che la normale addizione binaria funzioni senza problemi, senza alcuna gestione speciale del segno. Quasi ogni CPU moderna rappresenta gli interi in questo modo.
Questo calcolatore prende un intero decimale e una larghezza in bit (8, 16 o 32 bit) e mostra la sua configurazione in complemento a due sia in binario sia in esadecimale.
Come funziona?
Per una larghezza scelta di bit, ogni valore è memorizzato come una configurazione di bit senza segno:
- Se il numero è non negativo, la sua configurazione è semplicemente il binario di , completato con zeri iniziali fino a bit.
- Se il numero è negativo, la sua configurazione è il binario di .
Poiché è negativo nel secondo caso, è un valore positivo minore di , quindi entra sempre in bit. Il bit più significativo (quello più a sinistra) risulta essere per ogni numero negativo e per ogni numero non negativo — quel bit funge da segno.
Formula
Il risultato viene quindi scritto con esattamente cifre binarie (o cifre esadecimali).
Esempi svolti
Esempio 1: un numero positivo
Codifica in bit. Poiché , la configurazione è semplicemente in binario, completata a otto cifre:
Esempio 2: meno uno
Codifica in bit. Poiché , calcola :
Meno uno è sempre una fila ininterrotta di uni, qualunque sia la larghezza.
Esempio 3: meno cinque
Codifica in bit. Calcola :
Tabella di riferimento (8 bit)
| Decimale | Binario in complemento a due | Esadecimale |
|---|---|---|
| 5 | 00000101 | 0x05 |
| 0 | 00000000 | 0x00 |
| -1 | 11111111 | 0xFF |
| -5 | 11111011 | 0xFB |
| 127 | 01111111 | 0x7F |
| -128 | 10000000 | 0x80 |
Note
- Un intero con segno a bit copre l’intervallo da a ; bit coprono da a ; bit coprono all’incirca miliardi. I valori al di fuori dell’intervallo scelto vanno in overflow ciclico modulo .
- Il bit iniziale è il segno: indica un numero non negativo e indica un numero negativo.
- Per convertire un normale numero non negativo in binario senza bit di segno, usa il convertitore da decimale a binario, oppure il convertitore di sistemi numerici per altre basi.
Domande frequenti
Quanto vale -1 in complemento a due?
In qualsiasi larghezza è tutto uni: (0xFF) per 8 bit, (0xFFFF) per 16 bit, e così via.
Come ottengo a mano il complemento a due di un numero negativo?
Scrivi il valore assoluto del numero in binario, inverti ogni bit, poi aggiungi uno. Per in 8 bit: è , invertendo si ottiene e aggiungendo uno si ottiene — lo stesso risultato di .
Perché la larghezza in bit è importante?
La larghezza fissa quanti bit occupa la configurazione e quindi l’intervallo di numeri che puoi memorizzare. Lo stesso valore decimale produce una stringa più lunga di zeri o uni iniziali man mano che la larghezza cresce.