Il Sistema di Numerazione Binario di Aleck Ferrari (rezeus@excite.it), Michele Guerra, Alberto Mazzucato, Matteo Insabella

2.4     - Rappresentazione in complemento a 2

[I1] [I2] [E1] [F1] [ES1] [ES2]

Il complemento a 2 (o più genericamente, complemento alla base) è il punto d'arrivo per lo studio del sistema binario, infatti è la rappresentazione utilizzata nei calcolatori perché gode di particolari proprietà che la rendono preferibile a tutte le altre.

Nella rappresentazione in complemento a 2, con n bit assegnati, si codifica in binario con la solita convenzione posizionale, ma con la differenza che il primo bit rappresenta una quantità negativa. Il valore del primo bit decide quindi il segno del numero rappresentato: se esso vale 0 nel complesso le cifre rappresentano numeri positivi; se vale 1 nel complesso le cifre rappresentano numeri negativi, ma conserva l’informazione numerica attribuita alla sua posizione.

 

Si riassumono di seguito le regole pratiche per scrivere la rappresentazione in complemento a 2 di un dato numero decimale k:

§         se il numero k è positivo si dispone uno 0 iniziale (che rappresenta l’assenza della quantità negativa iniziale) seguito dalla rappresentazione binaria del numero;

 

esempio (con 4 bit): + 5 → 0101 = 0 x (-23) + 1 x 22 + 0 x 21 + 1 x 20 = + 5

 

la rappresentazione in complemento a 2 di numeri positivi è dunque la stessa che in modulo  e segno (soltanto che qui lo 0 iniziale assume un diverso significato).

 

Con n bit il campo dei decimali positivi rappresentabili va da 0 a 2n-1-1.

§         se il numero k è negativo si dispone un 1 iniziale (che rappresenta - 2n-1) seguito dalla rappresentazione binaria di 2n-1 + k;

 

esempio (con 4 bit): - 5 → 1 + rappresentazione binaria di 24-1 – 5 = 3:

 

1011, infatti 1011 = 1 x (-23) + 0 x 22 + 1 x 21 + 1 x 20 = - 5.

Con n bit il campo dei numeri negativi va da – 1 (tutti i bit a 1) a - 2n-1 (tutti i bit a 0 meno il primo).

 

Lo schema riportato di seguito riassume la codifica in complemento a 2 a 4 bit di numeri interi relativi:

 

 

 

 

 

 

 

 

0

0

0

0

  min + = 0

 

 

 

 

 

 

 

 

ı

 

 

 

 

 

 

 

 

ì

 

 

ı

 

 

 

 

 

 

0

positivi

 

ı

 

 

 

 

 

 

 

 

î

 

 

ı

 

 

 

 

 

ì

 

 

 

 

 

ı

 

 

 

 

 

  

 

 

 

 

0

1

1

1

  max + = +7 = + (24-1 - 1)

 

 

 

 

 

 

 

 

 

 

 

 

- 23

22

21

20

 

 

 

1

0

0

0

  min - = - 8 = - 2 4-1

 

 

î

 

 

 

 

 

ı

 

 

 

 

 

 

 

 

ì

 

 

ı

 

 

 

 

 

 

1

negativi

 

ı

 

 

 

 

 

 

 

 

î

 

 

ı

 

 

 

 

 

 

 

 

 

 

 

ı

 

 

 

 

 

 

 

 

 

 

1

1

1

1

  max = - 1

 

In generale, il campo rappresentabile dei decimali va ora da - 2n-1 a + 2n-1-1 ed è aumentato di una unità rispetto alla rappresentazione in modulo e segno perché lo zero ha un’unica rappresentazione.

L’addizione tra due numeri interi relativi rappresentati in complemento a 2 si esegue come una normale addizione, visto che anche il primo bit è una normale cifra sebbene di peso particolare, e troncando l’eventuale riporto a sinistra. Il vantaggio è che l’operazione può essere eseguita direttamente, senza prima guardare il segno dei numeri e decidere quale operazione eseguire: il risultato è sempre giusto, interpretato in complemento a 2.

 

Esempio

                                    (+3) + (-2)                                          (+5) + (+3)

 

 

0

0

1

1

+

 

 

 

 

1

0

1

1

+

 

 

1

1

1

0

=

 

 

 

 

0

0

1

1

=

 

1)

0

0

0

1

à

+1

 

 

 

1

1

1

0

à

- 2

 

 

La sottrazione viene effettuata come somma del minuendo e dell’opposto del sottraendo.

Per ottenere in modo immediato l’opposto di un certo numero in complemento a 2 si possono eseguire indifferentemente i due algoritmi seguenti:

§         si complementano tutte le cifre a sinistra dell’1 meno significativo

§         si complementano tutte le cifre e si aggiunge 1 (trascurando l’eventuale ultimo riporto a sinistra).

 

Esempio

 

0010 (+2) → 1110 (-2); 1011 (-5) → 0101 (+5)

oppure rispettivamente:

1101 + 1 = 1110; 0100 + 1 = 0101

 

Esempi di sottrazione

 

(+5) – (+2) = (+5) + (-2)

 

0

1

0

1

-

 

 

0

1

0

1

+

 

0

0

1

0

=

compl.

 

1

1

1

0

=

 

 

 

 

 

 

 

1

0

0

1

1

à

+3

 

(+2) – (+5) = (+2) + (-5)

 

0

0

1

0

-

 

0

0

1

0

+

 

0

1

0

1

=

compl.

1

0

1

1

=

 

 

 

 

 

 

 

1

1

0

1

à

-3

 

 

Nella tabella seguente sono riportate le rappresentazioni a confronto del complemento a 2, complemento a 1, modulo e segno dei valori rappresentabili su 4 bit:

 

compl. 2

compl. 1

mod. e sgn.

0111 (+7)

0111 (+7)

0111 (+7)

0110 (+6)

0110 (+6)

0110 (+6)

0101 (+5)

0101 (+5)

0101 (+5)

0100 (+4)

0100 (+4)

0100 (+4)

0011 (+3)

0011 (+3)

0011 (+3)

0010 (+2)

0010 (+2)

0010 (+2)

0001 (+1)

0001 (+1)

0001 (+1)

0000 (+0)

0000 (+0)

0000 (+0)

1111 (-1)

1111 (-0)

1000 (-0)

1110 (-2)

1110 (-1)

1001 (-1)

1101 (-3)

1101 (-2)

1010 (-2)

1100 (-4)

1100 (-3)

1011 (-3)

1011 (-5)

1011 (-4)

1100 (-4)

1010 (-6)

1010 (-5)

1101 (-5)

1001 (-7)

1001 (-6)

1110 (-6)

1000 (-8)

1000 (-7)

1111 (-7)

 

 

Si può notare come i valori negativi, ottenuti applicando le rispettive regole di rappresentazione ai corrispondenti valori positivi, siano effettivamente codifiche diverse nelle varie rappresentazioni e come il complemento a 2 sia l'unico ad avere una unica rappresentazione del valore 0, così come avviene nel sistema numerico decimale. Inoltre il complemento a 2 ha una ulteriore vantaggio, le operazioni che coinvolgono i valori binari si comportano in analogia con il sistema decimale e le sottrazioni possono agevolmente essere eseguite come somme infatti:

 

Binaria

Compl. a 2

Decimale

Compl. a 10

0

0

1

0

0

1

1

0

-

0

0

1

0

0

1

1

0

+

3

8

-

 

3

8

+

0

0

0

0

1

1

1

1

=

1

1

1

1

0

0

0

1

=

1

5

=

 

8

5

=

0

0

0

1

0

1

1

1

 

0

0

0

1

0

1

1

1

 

2

3

 

1

2

3

 

 

   22/53   

Approfondimenti/commenti:

    Nessuna voce inserita

Inserisci approfondimento/commento

Indice percorso Edita
Edurete.org Roberto Trinchero