sei sul sito di Giovanni Fraterno

ATTENZIONE che, per importanza sociale, subito dopo il legame affettivo che si instaura all'interno di una famiglia, viene quello che si instaura fra il professore e i suoi alunni, e che turbare entrambi i rapporti può essere carico di conseguenze (sabato 31° gennaio 2004, il professore).
4) Rappresentazione dei dati in memoria
( 1 - 2 - 3 - 4 )

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.



utenti in questo momento connessi alla rete di siti web di Giovanni Fraterno: