sei sul sito di Giovanni Fraterno
Abbiamo imparato che tutte
le informazioni per poter essere comprese e conservate dall’elaboratore devono essere in formato binario.
Di seguito vedremo come sono organizzati i dati numerici e come avvengono conseguentemente le normali operazioni
aritmetiche.
Cominciamo con la rappresentazione dei numeri interi.
I numeri interi con segno positivo, quando hanno il segno stesso sottinteso, si
chiamano numeri naturali.
In tal ultimo caso, se
abbiamo a disposizione 8 bit per
rappresentare un numero, in pratica possiamo lavorare
con tutti i numeri naturali compresi tra il valore decimale zero (in binario 00000000)
e il valore decimale 255 (in binario 11111111).
255 però è un numero troppo
piccolo per qualsiasi uso pratico.
Un primo modo di arginare
questo problema è quello di accostare tra
loro più parole di 8
bit.
In questo modo, se abbiamo a
disposizione per esempio 16 bit, possiamo arrivare a rappresentare tutti gli interi positivi da zero a 65535.
In generale, se abbiamo a
disposizione parole lunghe n bit, possiamo rappresentare tutti i numeri compresi fra zero e ((2^n) - 1).
La rappresentazione dei
numeri in forma di binario puro di cui sopra presenta comunque
un problema, un fenomeno che si chiama overflow.
Con il termine overflow ci
si riferisce al fenomeno di traboccamento di un
numero dallo spazio di memoria che ha a disposizione.
In pratica l’overflow è un errore che si presenta quando si tenta di
scrivere un numero più grande del massimo consentito dalla configurazione di n bit.
Per quanto si estenda il numero di bit,
o si cerchi di affiancare più byte, il fenomeno dell’overflow è ineliminabile poiché la
dimensione della memoria è comunque finita.
Se abbiamo bisogno di rappresentare anche il segno positivo o
negativo di un numero, e abbiamo a disposizione 8
bit, il bit più significativo, ovvero
quello a sinistra, verrà dedicato al segno.
Quest’ultima è la cosiddetta
tecnica del modulo e segno.
In tal caso, ora, tutti i
numeri che possiamo rappresentare sono tutti i numeri interi compresi
nell’intervallo da -127 a +127.
Rispetto a tale ultima
eventualità, un numero negativo più piccolo di -127 non
è dunque rappresentabile.
Tale problema prende il nome
di underflow.
Il fenomeno dell’underflow è inverso al problema dell’overflow.
L’underflow infatti si verifica quando si cerca di memorizzare un
numero più piccolo del valore minimo consentito dalla configurazione.
Al fine di rendere semplice
al personal computer le operazioni aritmetiche,
per rappresentare i numeri si utilizza la tecnica
del complemento a 2.
La tecnica del complemento a
2 si basa sulla tecnica del complemento a 1.
Vediamo allora prima la tecnica del complemento a 1.
Con la tecnica del complemento a 1:
- si scrive il numero in formato binario aggiungendo a sinistra tanti zeri quanti ne servono per arrivare a 8 bit
- si sostituisce ogni zero con un 1 e viceversa.
La determinazione del complemento a 2, a questo punto, si ottiene
semplicemente aggiungendo il successivo passo:
- sommare 1
al numero ottenuto con il complemento a 1.
La rappresentazione
nella memoria dei numeri avviene insomma nel seguente modo:
- se il numero da
rappresentare è positivo,
si segue la tecnica del modulo e segno visto
prima
- se
il numero da rappresentare è negativo si
dovrà applicare la tecnica del complemento a 2
del numero stesso senza però il segno meno.
Per rappresentare ad esempio
in memoria -73 in base 10
bisogna calcolare il complemento a 2 di 73.
Vediamo.
73 in base 2 è il numero 01001001.
A questo punto bisogna
calcolarne il complemento a 1 ottenendo la stringa 10110110.
Quindi bisogna sommare 1 ottenendo la stringa 10110111.
La rappresentazione corretta
dunque in complemento a 2 di -73 in base 10 è
la stringa 10110111.
Il vantaggio
più grande delle precedenti cose si ha nelle operazioni
aritmetiche.
Mentre però l’addizione tra numeri positivi non
presenta rilevanti differenze perché sono rappresentati in modulo e segno, la
novità riguarda l’addizione tra numeri negativi,
ovvero la sottrazione, che appunto si
trasforma nell’addizione del primo operando con il
complemento a 2 del secondo operando.
In tal ultimo caso, se il risultato presenterà un numero di bit superiore a quello degli operandi,
a causa di un eventuale riporto, si troncherà
la cifra più significativa
del risultato, con il numero troncato, però,
che è il risultato della sottrazione.
Si vedano a tal fine i due
successivi esempi.
Calcolare 15+39
00001111 +
00100111 =
=========
00110110
Calcolare 45-30
00101101 +
11100010 =
=========
100001111
Vediamo adesso la
rappresentazione dei numeri reali.
Le possibili soluzioni sono 2.
Il primo
modo di rappresentare i numeri reali è detto in virgola
fissa.
Questa tecnica prevede che,
all’interno di ogni byte,
il punto decimale occupa sempre la stessa posizione.
In pratica avremo una
divisione netta del byte in una zona destinata alla parte
intera e in una zona destinata alla parte
decimale, entrambe con la lunghezza prefissata.
Se per esempio immaginiamo
di suddividere un byte in una zona di 5 bit per la parte intera e in una zona di 3 bit per la parte decimale, se la parola contiene la sequenza
di bit 01010101 allora dovremo interpretarla
come il numero binario 01010,101
Un modo alternativo per
rappresentare in memoria i numeri reali è la tecnica di rappresentazione in virgola mobile.
Secondo questa tecnica i
numeri vengono espressi in
forma esponenziale.
Una modalità
di organizzazione in virgola mobile su 16 bit
è per esempio quella di riservare (da
sinistra a destra): 1 bit per il segno della
mantissa, 10 bit per la mantissa, 1 bit per il segno dell’esponente e 4 bit per l’esponente.