Conversione

Calcolatore del complemento a due

Impostazioni
Rimetti a zero
Condividi il risultato
Salva
Incorpora
Segnala un errore

Condividi calcolatrice

Aggiungi la nostra calcolatrice gratuita al tuo sito web

Origine

Per favore, inserisci un URL valido. Sono supportati solo gli URL HTTPS.

Stile

Colore dell'input a fuoco, colore della casella di switch selezionata, colore al passaggio del mouse sugli elementi selezionati, ecc.

Avanzate

Per favore, accetta i Termini di Utilizzo.

Anteprima

Salva calcolatrice

Impostazioni calcolatrice

Inserire un valore nell'intervallo consentito.

Inserire un valore nell'intervallo consentito.

Inserire un valore nell'intervallo consentito.

Inserire un valore nell'intervallo consentito.

Condividi calcolatrice

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 ww bit, ogni valore è memorizzato come una configurazione di bit senza segno:

  • Se il numero nn è non negativo, la sua configurazione è semplicemente il binario di nn, completato con zeri iniziali fino a ww bit.
  • Se il numero nn è negativo, la sua configurazione è il binario di 2w+n2^w + n.

Poiché nn è negativo nel secondo caso, 2w+n2^w + n è un valore positivo minore di 2w2^w, quindi entra sempre in ww bit. Il bit più significativo (quello più a sinistra) risulta essere 11 per ogni numero negativo e 00 per ogni numero non negativo — quel bit funge da segno.

Formula

pattern(n)={nif n02w+nif n<0\text{pattern}(n) = \begin{cases} n & \text{if } n \ge 0 \\ 2^{w} + n & \text{if } n < 0 \end{cases}

Il risultato viene quindi scritto con esattamente ww cifre binarie (o w/4w/4 cifre esadecimali).

Esempi svolti

Esempio 1: un numero positivo

Codifica n=5n = 5 in 88 bit. Poiché 505 \ge 0, la configurazione è semplicemente 55 in binario, completata a otto cifre:

5000001012=0x055 \rightarrow 00000101_2 = \text{0x05}

Esempio 2: meno uno

Codifica n=1n = -1 in 88 bit. Poiché 1<0-1 < 0, calcola 28+(1)=2561=2552^8 + (-1) = 256 - 1 = 255:

255111111112=0xFF255 \rightarrow 11111111_2 = \text{0xFF}

Meno uno è sempre una fila ininterrotta di uni, qualunque sia la larghezza.

Esempio 3: meno cinque

Codifica n=5n = -5 in 88 bit. Calcola 28+(5)=2565=2512^8 + (-5) = 256 - 5 = 251:

251111110112=0xFB251 \rightarrow 11111011_2 = \text{0xFB}

Tabella di riferimento (8 bit)

DecimaleBinario in complemento a dueEsadecimale
5000001010x05
0000000000x00
-1111111110xFF
-5111110110xFB
127011111110x7F
-128100000000x80

Note

  • Un intero con segno a 88 bit copre l’intervallo da 128-128 a 127127; 1616 bit coprono da 32,768-32{,}768 a 32,76732{,}767; 3232 bit coprono all’incirca ±2.1\pm 2.1 miliardi. I valori al di fuori dell’intervallo scelto vanno in overflow ciclico modulo 2w2^w.
  • Il bit iniziale è il segno: 00 indica un numero non negativo e 11 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: 11111111211111111_2 (0xFF) per 8 bit, 111111111111111121111111111111111_2 (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 5-5 in 8 bit: 55 è 0000010100000101, invertendo si ottiene 1111101011111010 e aggiungendo uno si ottiene 1111101111111011 — lo stesso risultato di 2565=251256 - 5 = 251.

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.

Segnala un errore

Questo campo è obbligatorio.