Complemento A Due: Metodo più diffuso per la rappresentazione dei numeri con segno in informatica

Il complemento a due, o complemento alla base, è il metodo più diffuso per la rappresentazione dei numeri con segno in informatica.

L'espressione complemento a due viene spesso usata impropriamente per indicare l'operazione di negazione (cambiamento di segno) nei computer che usano questo metodo. La sua enorme diffusione è data dal fatto che i circuiti di addizione e sottrazione non devono esaminare il segno di un numero rappresentato con questo sistema per determinare quale delle due operazioni sia necessaria, permettendo tecnologie più semplici e con maggiore precisione; si utilizza un solo circuito, il sommatore, sia per l'addizione che per la sottrazione.

Col complemento a due, il bit più significativo del numero ha peso negativo o positivo; da questo deriva che tutti i numeri che cominciano con un "1" sono numeri binari negativi, mentre tutti i numeri che cominciano con uno "0" sono numeri binari positivi.

Un numero binario positivo si può rendere negativo invertendone i bit e sommando 1 al valore risultante. Ciò è matematicamente giustificabile se osserviamo come si comporta la somma di un numero binario e del suo inverso: il risultato è una sequenza , che in complemento a 2 rappresenta -1. In simboli:

Allo stesso modo si può ottenere il valore assoluto di un numero binario negativo, ossia prendendo il complementare (invertendo il valore dei singoli bit) e aggiungendo 1 al numero binario risultante.

Un numero binario di n cifre può rappresentare con questo metodo i numeri compresi fra e .

Ad esempio, un numero binario di 8 cifre può rappresentare i numeri compresi tra -128 e +127.

Questo metodo consente di avere un'unica rappresentazione dello zero (quando tutti i bit sono zero, eliminando così la ridondanza dello zero che si verifica con la rappresentazione in modulo e segno), e di operare efficientemente addizione e sottrazione sempre avendo il primo bit a indicare il segno.

Infatti se il bit più significativo (il primo) è uguale a 1, il numero in complemento a due sarà negativo, mentre se questo è uguale a zero il numero sarà positivo, ecco un esempio:

01101100 (108) 10010100 (-108)

Caratteristiche

Questo metodo di rappresentazione ha notevoli vantaggi, soprattutto per effettuare somme e differenze. Il complemento a due supera infatti gli svantaggi della rappresentazione a modulo e segno soprattutto in termini di complessità realizzativa dei circuiti sommatori.

Come è possibile notare, in complemento a due, il primo bit diventa automaticamente il bit del segno (come per la rappresentazione a modulo e segno), risolvendo però il problema dell'ambiguità dello 0 (in complemento a 2, 00000 e 10000 hanno significati diversi) e vengono enormemente facilitate le operazioni di somma e differenza, che si riducono alla sola operazione di somma: per comprendere meglio è sufficiente un esempio:

Complemento A Due: Caratteristiche, Calcolo dellopposto in complemento a due, Addizione 

Calcolo dell'opposto in complemento a due

Per rappresentare l'opposto di un numero binario in complemento se ne invertono, o negano, i singoli bit: si applica cioè l'operazione logica NOT. Si aggiunge infine 1 al valore del numero trovato con questa operazione.

Ad esempio per rappresentare il numero -5 usando 8 bit in complemento a 2 il procedimento è il seguente:

Si parte dalla rappresentazione in binario del numero 5:

0000 0101 (5) 

La prima cifra è 0, quindi il numero è sicuramente positivo. Si invertono tutti i bit: 0 diventa 1, e 1 diventa 0:

1111 1010 

A questo punto si è ottenuto il complemento a uno del numero 5; per ottenere il complemento a due bisogna sommare 1 a questo numero:

1111 1010 + 0000 0001 = 1111 1011 (-5) 

Il risultato è un numero binario con segno che rappresenta il numero negativo -5 secondo il complemento a due. Il primo bit, avendo valore 1, evidenzia che il numero è negativo.

Il complemento a due di un numero negativo ne restituisce il numero positivo pari al valore assoluto: invertendo i bit della rappresentazione del numero -5 (sopra) si ottiene infatti:

0000 0100 

Sommando 1 il risultato è:

0000 0100 + 0000 0001 = 0000 0101 (+5) 

che è appunto la rappresentazione del numero +5 in forma binaria.

Si noti che il complemento a due dello zero è zero stesso: invertendone la rappresentazione si ottiene un byte di 8 bit pari a tutti 1, e aggiungendo 1 si ritorna a tutti 0 (l'overflow viene ignorato).

Addizione

Operare l'addizione di due interi rappresentati con questo metodo non richiede processi speciali se essi sono di segno opposto, e il segno viene determinato automaticamente. Facciamo un esempio addizionando 15 e -5:

11111 1110 (riporto)  0000 1111 (15) + 1111 1011 (-5) -----------  0000 1010 (10) 

Questo processo gioca sulla lunghezza fissa di 8 bit della rappresentazione: viene ignorato un riporto di 1 che causerebbe un overflow, e rimane il risultato corretto dell'operazione (10).

Gli ultimi due bit (da destra a sinistra), ovvero i più significativi, della riga dei riporti contengono importanti informazioni sulla validità dell'operazione: se il risultato è compreso o non è compreso nell'intervallo dei numeri rappresentabili. Si verifica se il riporto è stato eseguito sul bit del segno ma non è stato portato fuori, o viceversa; più semplicemente, se i due bit più a sinistra sulla riga dei riporti non sono entrambi 0 o 1. Per verificare la validità del risultato è conveniente eseguire su questi due bit un'operazione XOR. Vediamo un esempio di addizione a 4 bit di 7 e 3:

01110 (riporto)  0111 (7) + 0011 (3) -------------  1010 (-6) 

In questo caso, come si può notare dal riporto presente solo sul bit più significativo, si è in presenza di overflow, per cui il risultato non è 10 (come sarebbe corretto) ma -6, infatti il massimo numero positivo rappresentabile in complemento a due su quattro bit è 7 (con n=4: 2n-1 - 1 = 7).

Sottrazione

Anche se la sottrazione potrebbe essere eseguita aggiungendo il complemento a due del sottraendo al minuendo, questo procedimento è poco utilizzato in quanto porta più complicazioni che semplicemente costruire un circuito per la sottrazione. Ma come per l'addizione, il vantaggio del complemento a due è l'eliminazione della necessità di esaminare i segni degli operandi per determinare quale operazione sia necessaria. Per esempio, sottrarre -5 a 15 è come aggiungere 5 a 15, ma questo è nascosto dal complemento a due:

 1111 0000 (riporto)  0000 1111 (15) − 1111 1011 (−5) -----------  0001 0100 (20) 

L'overflow viene individuato con lo stesso metodo usato per l'addizione, esaminando i due bit più a sinistra sulla riga dei riporti: se sono differenti si è verificato un overflow.

Facciamo un altro esempio con una sottrazione con risultato negativo: 15 − 35 = −20:

 1110 0000 (riporto)  0000 1111 (15) − 0010 0011 (35) -----------  1110 1100 (−20) 

Particolarità

A parte una singola eccezione, cercando il complemento a due di ogni numero rappresentato con questo metodo, otteniamo il suo opposto: 5 diventa -5, 12 diventa -12, ecc.

Il minor numero rappresentabile (cioè quello negativo con maggior valore assoluto) costituisce l'unica eccezione: vediamo l'esempio del numero -128 nella rappresentazione a 8 bit:

1000 0000 (−128) 0111 1111 (bit invertiti) 1000 0000 (aggiunto 1) 

Questo perché 127 è il maggior numero con segno rappresentabile con 7 bit. Si noti che viene segnalato un overflow perché c'è un riporto sul bit del segno ma non fuori di esso.

Nonostante questo sia un numero unico, la sua rappresentazione è valida. Tutte le operazioni possono funzionare con esso sia come operando che come risultato (a meno che non sia successo un overflow).

Trattazione matematica

I 2n possibili valori degli n bit che vanno a costituire la rappresentazione di un numero intero in forma binaria formano un anello di classi di equivalenza, ovvero gli interi (modulo 2n). Ciascuna classe rappresenta un insieme {j + k·2n | k è un intero} per ogni intero j, 0 ≤ j ≤ 2n − 1. Esistono 2n insiemi del genere, e l'addizione e la moltiplicazione sono ben definite all'interno di essi.

Se le classi sono impiegate per rappresentare i numeri tra 0 e 2n − 1, e l'overflow viene ignorato, si ha un insieme di interi senza segno; ma ognuno di essi è equivalente a sé stesso meno 2n. Quindi le classi possono essere intese come la rappresentazione dei numeri tra −2n−1 e 2n−1 − 1, sottraendo 2n dalla metà di essi.

Per semplicità: con 8 bit si possono rappresentare i numeri interi da 0 a 255. Sottraendo 256 alla metà superiore (da 128 a 255) si ottengono i numeri da -128 a -1, e l'insieme totale comprende ora i numeri da -128 a 127, con segno.

La relazione col complemento a due è resa evidente dal fatto che 256 = 255 + 1, e che 255 - x è il complemento a uno di x.

    Esempio

-95 modulo 256 equivale a 161, dal momento che:

    −95 + 256
    = −95 + 255 + 1
    = 255 − 95 + 1
    = 160 + 1
    = 161
 1111 1111            255  − 0101 1111           − 95   -----------           -----  1010 0000 (complemento a uno)  160 +     1           +  1 -----------           -----  1010 0001 (complemento a due)  161 

Bibliografia

Voci correlate

Collegamenti esterni

Complemento A Due: Caratteristiche, Calcolo dellopposto in complemento a due, Addizione  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica

Tags:

Complemento A Due CaratteristicheComplemento A Due Calcolo dellopposto in complemento a dueComplemento A Due AddizioneComplemento A Due SottrazioneComplemento A Due ParticolaritàComplemento A Due Trattazione matematicaComplemento A Due BibliografiaComplemento A Due Voci correlateComplemento A Due Collegamenti esterniComplemento A DueInformaticaSommatore

🔥 Trending searches on Wiki Italiano:

Qualificazioni al campionato mondiale di calcio 2026Jackie BrownCaroline GarciaKiller dello ZodiacoCristian ZaccardoDune (romanzo)Cesare Cremonini (cantante)Donald TrumpQuarto potereVizzolo PredabissiPatrick MageeDario FabbriGrande Fratello VIPDisastro aereo delle AndeFrancesca AlbaneseTomáš MacháčMorti nel 2024GodzillaNapoliCampo di concentramento di AuschwitzFerrariLamborghiniMatteo Messina DenaroProblema dei tre corpiMartina NavrátilováAdam ShulmanGuido CrosettoJ. Robert OppenheimerOnlyFansJudi DenchThe White LotusDavid ParenzoOrnella VanoniAttentati dell'11 settembre 2001Sabrina ImpacciatoreMiami Open 2024Philip Seymour HoffmanPoloniaJennifer AnistonTed BundyToni KroosMillie Bobby BrownThe Walking Dead (serie televisiva)Sydney SweeneyAlmudena AmorAndrea PirloPugliaFabio TamburiniSergio LeoneUnione europeaE.R. - Medici in prima lineaPaolo MaldiniBud SpencerStoria del cristianesimo in età medievaleZircon (missile)InterstellarLidia RaveraDiego Armando MaradonaDaniil MedvedevNATOTheo HernándezNovak ĐokovićNeymarLe Mans '66 - La grande sfidaMiriam DalmazioC'è ancora domaniTitanic (film 1997)Se potessi dirti addioL'ispettore DerrickVasco RossiRed EyeDelitto e castigoPapa Benedetto XVIRomelu LukakuCampionato mondiale di Formula 1 2022Quinta Armata d'India (Albuquerque, 1503)BaltimoraShall We Dance? (film 2004)Mahmood🡆 More