[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico] [home] [volume] [parte]


Capitolo 732.   Operazioni elementari e sistema di rappresentazione binaria dei valori

È importante conoscere alcuni concetti legati ai calcoli più semplici, applicati al sistema binario; soprattutto il modo in cui si utilizza il complemento a due. Infatti, la memoria di un elaboratore consente di annotare esclusivamente delle cifre binarie, in uno spazio di dimensione prestabilita e fissa; pertanto, attraverso il complemento a due si ha la possibilità di gestire in modo «semplice» la rappresentazione dei numeri interi negativi.

732.1   Complemento alla base di numerazione

Dato un numero n, espresso in base b, con k cifre, il complemento alla base è costituito da bk-n.

Per esempio, il complemento alla base del numero 00 123 456 789 (espresso in base dieci utilizzando 11 cifre) è 99 876 543 211:

complemento alla base di 00123456789

Dall'esempio si deve osservare che la quantità di cifre utilizzata è determinante nel calcolo del complemento, infatti, il complemento alla base dello stesso numero, usando però solo nove cifre (123 456 789) è invece 876 543 211:

complemento alla base di 123456789

In modo analogo si procede con i valori aventi una base diversa; per esempio, il complemento alla base del numero binario 001100112, composto da otto cifre, è pari a 110011012:

complemento alla base di 00110011_(2)

Il calcolo del complemento alla base, nel sistema binario, avviene in modo molto semplice, se si trasforma in questo modo:

complemento alla base di 00110011_(2)

In pratica, si prende un numero composto da una quantità di cifre a uno, pari alla stessa quantità di cifre del numero di partenza; quindi si esegue la sottrazione, poi si aggiunge il valore uno al risultato finale. Si osservi però cosa accade con una situazione leggermente differente, per il calcolo del complemento alla base di 00110011002:

complemento alla base di 0011001100_(2)

Per eseguire una sottrazione, si può calcolare il complemento alla base del sottraendo (il valore da sottrarre), sommandolo poi al valore di partenza, trascurando il riporto eventuale. Per esempio, volendo sottrarre da 1 757 il valore 758, si può calcolare il complemento alla base di 0 758 (usando la stessa quantità di cifre dell'altro valore), per poi sommarla. Il complemento alla base di 0 758 è 9 242:

complemento alla base di 0758

Invece di eseguire la sottrazione, si somma il valore ottenuto a quello di partenza, ignorando il riporto:

1757+9242-10000

Infatti: 1 757-758=999.

732.1.1   Esercizio

Si determini il complemento alla base del valore 000012345610 (a dieci cifre), compilando lo schema successivo:

decimale

732.1.2   Esercizio

Si determini il complemento alla base del valore 999912345610 (a dieci cifre), compilando lo schema successivo:

decimale

732.2   Complemento a uno e complemento a due

Quando si fa riferimento a numeri in base due, il complemento alla base è più noto come «complemento a due» (che evidentemente è la stessa cosa). D'altro canto, il complemento a uno è ciò che è già stato descritto con l'esempio seguente, dove si ottiene a partire dal numero 00110011002:

complemento a uno di 0011001100_(2)

Si comprende intuitivamente che il complemento a uno si ottiene semplicemente invertendo le cifre binarie:

complemento a uno di 0011001100_(2)

Pertanto, il complemento a due di un numero binario si ottiene facilmente invertendo le cifre del numero di partenza e aggiungendo una unità al risultato.

732.2.1   Esercizio

Si determini il complemento a uno e il complemento a due del valore 00110010010001012, compilando gli schemi successivi:

complemento

complemento

732.2.2   Esercizio

Si determini il complemento a uno e il complemento a due del valore 11110011000101012, compilando gli schemi successivi:

complemento

complemento

732.3   Addizione binaria

L'addizione binaria avviene in modo analogo a quella del sistema decimale, con la differenza che si utilizzano soltanto due cifre numeriche: 0 e 1. Pertanto, si possono presentare solo i casi seguenti:

somma binaria

Segue l'esempio di una somma tra due numeri in base due:

somma in base due

732.4   Sottrazione binaria

La sottrazione binaria può essere eseguita nello stesso modo di quella che si utilizza nel sistema decimale. Come avviene nel sistema decimale, quando una cifra del minuendo (il numero di partenza) è minore della cifra corrispondente nel sottraendo (il numero da sottrarre), si prende a prestito una unità dalla cifra precedente (a sinistra), che così si somma al minuendo con il valore della base di numerazione. L'esempio seguente mostra una sottrazione con due numeri binari:

sottrazione binaria

Generalmente, la sottrazione binaria viene eseguita sommando il complemento alla base del sottraendo. Il complemento alla base di 001100112 con otto cifre è 110011012:

complemento alla base di 00110011_(2)

Pertanto, la sottrazione originale diventa una somma, dove si trascura il riporto:

sottrazione attraverso la somma

732.5   Moltiplicazione binaria

La moltiplicazione binaria si esegue in modo analogo a quella per il sistema decimale, con il vantaggio che è sufficiente sommare il moltiplicando, facendolo scorrere verso sinistra, in base al valore del moltiplicatore. Naturalmente, lo spostamento di un valore binario verso sinistra di n posizioni, corrisponde a moltiplicarlo per 2n. Si osservi l'esempio seguente dove si moltiplica 100110012 per 10112:

moltiplicazione binaria

732.6   Divisione binaria

La divisione binaria si esegue in modo analogo al procedimento per i valori in base dieci. Si osservi l'esempio seguente, dove si divide il numero 101102 (2210) per 1002 (410):

divisione binaria

In questo caso il risultato è 1012 (510), con il resto di 102 (210); ovvero 101,12 (5,510).

Intuitivamente si comprende che: si prende il divisore, senza zeri anteriori, lo si fa scorrere a sinistra in modo da trovarsi allineato inizialmente con il dividendo; se la sottrazione può avere luogo, si scrive la cifra 12 nel risultato; si continua con gli scorrimenti e le sottrazioni; al termine, il valore residuo è il resto della divisione intera.

732.7   Rappresentazione binaria di numeri interi senza segno

La rappresentazione di un valore intero senza segno coincide normalmente con il valore binario contenuto nella variabile gestita dall'elaboratore. Pertanto, una variabile della dimensione di 8 bit, può rappresentare valori da zero a 28-1:

000000002 (010)
000000012 (110)
000000102 (210)
...
111111102 (25410)
111111112 (25510)

732.8   Rappresentazione binaria di numeri interi con segno

Attualmente, per rappresentare valori interi con segno (positivo o negativo), si utilizza il metodo del complemento alla base, ovvero del complemento a due, dove il primo bit indica sempre il segno. Attraverso questo metodo, per cambiare di segno a un valore è sufficiente calcolarne il complemento a due.

Per esempio, se si prende un valore positivo rappresentato in otto cifre binarie come 000101002, pari a +2010, il complemento a due è: 111011002, pari a -2010 secondo questa convenzione. Per trasformare il valore negativo nel valore positivo corrispondente, basta calcolare nuovamente il complemento a due: da 111011002 si ottiene ancora 000101002 che è il valore positivo originario.

Con il complemento a due, disponendo di n cifre binarie, si possono rappresentare valori da -2(n-1) a +2(n-1)-1 ed esiste un solo modo per rappresentare lo zero: quando tutte le cifre binarie sono pari a zero. Infatti, rimanendo nell'ipotesi di otto cifre binarie, il complemento a uno di 000000002 è 111111112, ma aggiungendo una unità per ottenere il complemento a due si ottiene di nuovo 000000002, perdendo il riporto.

Si osservi che il valore negativo più grande rappresentabile non può essere trasformato in un valore positivo corrispondente, perché si creerebbe un traboccamento. Per esempio, utilizzando sempre otto bit (segno incluso), il valore minimo che possa essere rappresentato è 10000002, pari a -12810, ma se si calcola il complemento a due, si ottiene di nuovo lo stesso valore binario, che però non è valido. Infatti, il valore positivo massimo che si possa rappresentare in questo caso è solo +12710.

Figura 732.23. Confronto tra due valori interi con segno.

bin

Figura 732.24. Valori massimi rappresentabili con soli otto bit.

bin max

Il meccanismo del complemento a due ha il vantaggio di trasformare la sottrazione in una semplice somma algebrica.

732.8.1   Esercizio

Come si rappresenta il numero +10310, in una variabile binaria, a sedici cifre con segno?

sedici cifre con segno

732.8.2   Esercizio

Come si rappresenta il numero -10310, in una variabile binaria, a sedici cifre con segno?

sedici cifre con segno

732.8.3   Esercizio

Data una variabile a sedici cifre che rappresenta un numero con segno, contenente il valore 11111111111100012, si calcoli il complemento a due e poi il valore corrispondente in base dieci, specificando il segno:

sedici cifre con segno

decimale

732.8.4   Esercizio

Data una variabile a sedici cifre che rappresenta un numero con segno, contenente il valore 00000000001100012, si calcoli il valore corrispondente in base dieci:

decimale

Si calcoli quindi il complemento a due:

sedici cifre con segno

Supponendo di interpretare il valore binario ottenuto dal complemento a due, come se si trattasse di un'informazione priva di segno, si calcoli nuovamente il valore corrispondente in base dieci:

decimale

732.8.5   Esercizio

Data una variabile a dodici cifre binarie che rappresenta un numero con segno, leggendo il suo contenuto come se fosse una variabile priva di segno, si potrebbe determinare quel segno originale in base al valore che si ottiene. Si scrivano gli intervalli che riguardano valori positivi e valori negativi:

Intervallo che rappresenta valori positivi Intervallo che rappresenta valori negativi
 
 
 
 

732.8.6   Esercizio

Data una variabile a sedici cifre binarie che rappresenta un numero con segno, leggendo il suo contenuto come se fosse una variabile priva di segno, si potrebbe determinare quel segno originale in base al valore che si ottiene. Si scrivano gli intervalli che riguardano valori positivi e valori negativi:

Intervallo che rappresenta valori positivi Intervallo che rappresenta valori negativi
 
 
 
 

732.9   Cenni alla rappresentazione binaria di numeri in virgola mobile

Una forma diffusa per rappresentare dei valori molto grandi, consiste nell'indicare un numero con dei decimali moltiplicato per un valore costante elevato a un esponente intero. Per esempio, per rappresentare il numero 123 000 000 si potrebbe scrivere 123·106, oppure anche 0,123·109. Lo stesso ragionamento vale anche per valori molti piccoli; per esempio 0,000 000 123 che si potrebbe esprimere come 0,123·10-6.

Per usare una notazione uniforme, si può convenire di indicare il numero che appare prima della moltiplicazione per la costante elevata a una certa potenza come un valore che più si avvicina all'unità, essendo minore o al massimo uguale a uno. Pertanto, per gli esempi già mostrati, si tratterebbe sempre di 0,123·10n.

Per rappresentare valori a virgola mobile in modo binario, si usa un sistema simile, dove i bit a disposizione della variabile vengono suddivisi in tre parti: segno, esponente (di una base prestabilita) e mantissa, come nell'esempio che appare nella figura successiva.(1)

Figura 732.34. Ipotesi di una variabile a 16 bit per rappresentare dei numeri a virgola mobile.

virgola mobile

Nella figura si ipotizza la gestione di una variabile a 16 bit per la rappresentazione di valori a virgola mobile. Come si vede dallo schema, il bit più significativo della variabile viene utilizzato per rappresentare il segno del numero; i sette bit successivi si usano per indicare l'esponente (con segno) e gli otto bit finali per la mantissa (senza segno perché indicato nel primo bit), ovvero il valore da moltiplicare per una certa costante elevata all'esponente.

Quello che manca da decidere è come deve essere interpretato il numero della mantissa e qual è il valore della costante da elevare all'esponente indicato. Sempre a titolo di esempio, si conviene che il valore indicato nella mantissa esprima precisamente «0,mantissa» e che la costante da elevare all'esponente indicato sia 16 (ovvero 24), che si traduce in pratica nello spostamento della virgola di quattro cifre binarie alla volta.(2)

Figura 732.35. Esempio di rappresentazione del numero 0,051 513 671 875 (211·16-3), secondo le convenzioni stabilite. Si osservi che il valore dell'esponente è negativo ed è così rappresentato come complemento alla base (due) del valore assoluto relativo.

somma

Naturalmente, le convenzioni possono essere cambiate: per esempio il segno lo si può incorporare nella mantissa; si può rappresentare l'esponente attraverso un numero al quale deve essere sottratta una costante fissa; si può stabilire un valore diverso della costante da elevare all'esponente; si possono distribuire diversamente gli spazi assegnati all'esponente e alla mantissa.

732.10   Riferimenti


1) Nel contesto riferito alla definizione di un numero in virgola mobile, si possono usare indifferentemente i termini mantissa o significante, così come sono indifferenti i termini caratteristica o esponente.

2) Si osservi che lo standard IEEE 754 utilizza una «mantissa normalizzata» che indica la frazione di valore tra uno e due: «1,mantissa.


Appunti di informatica libera 2008 --- Copyright © 2000-2008 Daniele Giacomini -- <appunti2 (ad) gmail·com>


Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome operazioni_elementari_e_sistema_di_rappresentazione_binaria_.htm

[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico] [home]

Valid ISO-HTML!

CSS validator!

Gjlg Metamotore e Web Directory