Rappresentazione dei numeri

Si può rappresentare l’informazione attraverso varie forme:

  • Numeri
  • Testi
  • Suoni
  • Immagini

Scopo di questa lezione è quello di mostrare come tutte queste informazioni possano essere rappresentate all’interno di un elaboratore ovvero come tutte le informazioni possono essere rappresentate mediante stringhe composte dai simboli “0” e “1”.

Uso di tecnologia digitale:

Il calcolatore è in grado di manipolare solo due simboli elementari che noi codifichiamo normalmente in “0” ed “1”.
All’interno della CPU le informazioni vengono rappresentate da 2 possibili valori di tensione elettrica, in generale, a seconda del tipo di dispositivo considerato, i valori zero ed uno sono rappresentati:

  • da una tensione elettrica (alta, bassa);
  • da un differente stato di polarizzazione magnetica (positiva, negativa);
  • da luce e buio;


Notazioni e definizioni

BIT: la parola BIT deriva da BInary digiT, termine inglese che significa cifra binaria e che noi siamo abituati a rappresentare con i simboli “0” e “1”.

BYTE: è l’entità elementare di memorizzazione dell’informazione ed è costituita da 8 bit.
È facile comprendere che con 2 soli simboli è possibile rappresentare un’informazione estremamente limitata e, quindi, bisogna aggregare questi simboli in entità che ci consentono di rappresentare informazioni ben più complesse.
È stata assunta un’entità standard costituita da 8 bit che costituiscono l’elemento di memorizzazione fondamentale.
Possiamo pensare che un byte è costituito da una sequenza ordinata di 8 bit, dove il bit più a destra assume la posizione convenzionale 0 ed il bit più a sinistra assume la posizione convenzionale 7.

76543210
Bit più significativo         Bit meno significativo

Più in generale se abbiamo n+1 bit partiremo dalla posizione 0, il cosiddetto bit meno significativo e raggiungeremo la posizione n-esima che rappresenta il bit più significativo.

nn-10
Bit più significativo         Bit meno significativo

Multipli del Byte

Kilobyte (Kb)         1024 byte (210 byte)
Megabyte (Mb)      1.048.576 byte (220 byte)
Gigabyte 
(Gb)        1.073.741.824 byte (230 byte)

Numero di oggetti rappresentabili con bit

Con bit è possibile rappresentare 2simboli.
Per dimostrarlo utilizziamo il metodo induttivo.

Con 1 bit è possibile rappresentare due simboli: uno che corrisponde allo 0 e l’altro all’1.
Con 2 bit, 4 simboli 00, 01, 10, 11.
Con 3 bit, 8 simboli 000, 001, 010, 011, 100,101, 110, 111.
Con – 1 bit si possono rappresentare 2– 1 simboli. E con bit?

Usare bit significa aggiungere un bit ai n-1. Tale bit può avere solo due configurazioni: 0 o 1.
Quindi con bit avremo 2– 1 simboli che corrispondono al valore 0 del bit aggiunto (l’n-esimo) e 2n-1 che corrispondono al valore 1 del bit aggiunto, quindi:

2– 1 + 2– 1 = (1 + 1) * 2n – 1 = 2 * 2– 1 = 2 1 * 2– 1 = 2(– 1)+1 = 2n.

Numero di bit necessari per rappresentare oggetti

Dobbiamo fare in modo che la combinazione dei bit sia maggiore o uguale al numero dei simboli.
In particolare ciò si traduce nella formula:

2n >= N

ossia dobbiamo scegliere il numero minimo di bit per il quale 2è maggiore o al più uguale al numero di simboli che vogliamo rappresentare. Da questa formula, passando al logaritmo in base 2 entrambi i membri, otteniamo il valore di n:

>= log2 N

Evidentemente, log2 non sarà in generale un valore intero, quindi dobbiamo fare in modo che questa relazione ci produca un numero intero di bit.

Per cui scriveremo che è la parte intera di log2 aggiungendo ancora 1 (arrotondiamo in eccesso all’intero più vicino).
In alternativa basta cercare l’per il quale 2n è >= N.

Es.: supponiamo di avere = 87 oggetti e supponiamo di voler determinare il numero di bit richiesto per rappresentare questi 87 oggetti:

2n >= 87

>= log2 87

log2 87 = 6.65 circa, per cui l’intero maggiore od uguale a 6.65 è = 7 bit.

Per 87 oggetti occorrono 7 bit. Si noti che in realtà con 27 = 128, ossia con 7 bit potremmo rappresentare 128 oggetti distinti e quindi abbiamo una certa discrezionalità nello scegliere le configurazioni, dobbiamo perciò stabilire con precisione quale configurazione è associata a ciascun oggetto. Alternativamente 26 = 64 e 27 = 128, ne consegue che ho bisogno di almeno = 7 bit.

Supponiamo ad esempio di voler codificare tre colori: il Rosso, il Verde, il Blu (sono i tre colori fondamentali che permettono in un video di un computer di comporre tutti gli altri colori).

Abbiamo quindi = 3; si calcola tramite le formule precedenti e si ha = 2.
Quindi abbiamo 22 = 4 combinazioni, che sono: 00, 01, 10, 11

Abbiamo detto di voler codificare il R, il V, il B.

Possiamo allora scegliere per esempio la seguente corrispondenza:

00 | Rosso
01 | Verde
10 | Blu
11 | combinazione non utilizzata

Oppure:

00 | Blu
01 | Rosso
10 | combinazione non utilizzata
11 | Verde

Codice ASCII

I caratteri di un testo vengono codificati tramite sequenze di bit, utilizzando un codice di traduzione.

Uno dei più diffusi codice di caratteri è il Codice ASCII (ASCII è un acronimo e sta per American Standard Code for Information Interchange).

È un codice di 7 bit che offre dunque la possibilità di esprimere 128 simboli diversi. In generale si utilizza il codice ASCII esteso, che utilizza 8 bit, e aggiunge altri 128 simboli specifici della nazione in cui ci si trova o del sistema operativo che si utilizza.

In alcuni casi i 7 bit sono utilizzati quando l’informazione viene trasferita da un calcolatore ad un altro dispositivo, ed allora minimizzare il numero di bit di rappresentazione vuol dire minimizzare il tempo di trasmissione dell’informazione stessa.

Il codice ASCII esteso utilizza invece 8 bit (256 caratteri).

In trasmissione l’ottavo bit funziona come bit di parita’ per individuare errori.
Il valore (0 o 1) del bit di parità è scelto in modo che la sequenza di 1 sia pari.

Ad esempio:      0  => 4810 => 0 011 00002

Il codice ASCII, è stato creato dallo ANSI (American National Standardization Institute).

Per comprendere meglio la codifica facciamo un esempio.
La parola “CIAO” viene rappresentata all’interno di un elaboratore come sequenza di caratteri codificati in ASCII, come segue:

CIAO
01000011010010010100000101001111
1° byte2° byte3° byte4° byte

Le sequenze binarie hanno lo svantaggio d’essere molto lunghe in relazione alla quantità d’informazione che rappresentano.
All’interno del computer non si può fare diversamente, ma per gli esseri umani ricordare e scrivere “0” ed “1” è un’attività tediosa oltre che difficile. Si cerca quindi di rappresentare in forme più concise tali sequenze, per rendere più snella l’operazione di scrittura.
La rappresentazione esadecimale è la più utilizzata.

Rappresentazione dei numeri

Passiamo adesso alla codifica di un’altra classe di informazioni di grande rilevanza: i numeri.
Nella codifica ASCII, chiamata anche “CODIFICA DI CARATTERE” (in quanto ad ogni carattere corrisponde un codice che utilizza un byte), possiamo rappresentare i numeri.

Per esempio 1237 è rappresentato come sequenza di 4 byte:

  • un primo byte che contiene la codifica ASCII della cifra 1 (00110001)
  • un secondo byte che contiene la codifica ASCII della cifra 2 (00110010) …
  • un quarto byte che contiene la codifica ASCII della cifra 7 (00110111)

Questa forma di rappresentazione di un numero è idonea per la rappresentazione su video o per un testo ma non è adatta per effettuare dei calcoli.

Possiamo, quindi, sinteticamente affermare che all’interno del nostro elaboratore abbiamo:

  • codifica per i testi -> ASCII
  • codifica per i numeri

Dobbiamo innanzi tutto capire quale è la differenza fra la rappresentazione di un numero ed il suo valore vero. Per esempio, quando pensiamo al numero intero 4 come concetto astratto, possiamo rappresentarlo in modi diversi: con le dita di una mano, secondo la nostra codifica di sistema decimale, in numeri romani.
Esistono quindi almeno tre rappresentazioni per la stessa entità.

In particolare delle tre rappresentazioni c’è ne è una che ha una certa rilevanza ed è quella usata comunemente da noi umani: il sistema di rappresentazione decimale posizionale.

Sistema Posizionale

Un sistema posizionale è caratterizzato da una base radice che indicheremo con la lettera e da un insieme di cifre di che vanno da 0 a (r-1).

Il sistema decimale ha una base = 10 che utilizza 10 cifre: 0, 1, 2, …, 9.

Se avessimo = 3 avremmo le seguenti cifre: 0, 1, 2.

Prima di vedere cosa succede all’interno di un elaboratore, vediamo come è possibile passare, in un sistema posizionale, dalla rappresentazione di un numero al suo valore o viceversa.

In un sistema di rappresentazione posizionale il generico numero è rappresentato da una sequenza di cifre:

dm dm-1… d1 d0

ove ciascuna di queste cifre appartiene all’insieme proprio del sistema di numerazione.

Per esempio se fosse = 1732 il suo valore si otterrebbe tenendo presente che abbiamo 2 unità, 3 decine, 7 centinaia, 1 migliaio e dunque:

= 1 migliaio + 7 centinaia + 3 decine + 2 unità

Ciò significa che all’entità 2 associamo un peso di 100, all’entità 3 il peso 101, all’entità 7 il peso 102, e all’entità 1 il peso 103.

Da questa semplice considerazione possiamo ricavare quella che è una regola dei sistemi di rappresentazione posizionale (posizionale perché ad ogni cifra è associato un ben determinato peso che dipende dalla posizione della cifra all’interno del numero).

Da quanto detto è possibile dedurre alcune regole:

Assegnato un numero intero non negativo N, questo è rappresentato come sequenza di simboli (cifre):

dm dm-1… d1 d0

Il valore del numero è:

Nvalore = dn-1 rn-1 + dn-2 rn-2 + ….. + d1 r1 + d0 r0

essendo: la base del sistema di numerazione, le cifre appartenenti all’insieme 0, 1, …, r-1.

Il sistema binario è un sistema avente come base = 2 e cifre 0 e 1.

Per convertire un numero dal sistema binario al sistema decimale applichiamo la formula del valore vero.
Ad esempiodato il numero 1010 in base 2 si vuole trovare il suo valore in base 10:

10102 = 1* 23 + 0* 22 + 1*21 +0* 20= 8 +2 = 1010

Il sistema esadecimale ha una base = 16 avente come cifre i seguenti simboli: 0, 1, 2, …, 9, A, B, C, D, E, F
con valori 0, 1, …, 9, 10, 11, 12, 13, 14, 15 rispettivamente.

Ad esempio: 10F216 = 1 * 163 + 0 * 162 + F * 161 + 2* 160
                            = 1 * 4096 + 15 * 161 + 2*1
                            = 1*4096 + 15*16 + 2*1 = 4096 + 240 + 2 = 4338(10)

Conversione dalla base 2 alla base 10

Dato un numero nel sistema decimale, vogliamo vedere come questo viene rappresentato all’interno dell’elaboratore in termini di 0 ed 1, ossia vogliamo effettuare la conversione da sistema decimale a sistema binario.

In realtà consente di passare dalla rappresentazione in base 10 ad una rappresentazione in una base r qualunque N10 -> Nr

Come sappiamo il valore di un numero è esprimibile mediante la relazione:

N10 = dn-1 rn-1 + dn-2 rn-2 + ….. + d1 r1 + d0 r0

mettiamo a fattore comune (la base) fra le prime n-1 entità:

N10 = dn-1 rn-2 + dn-2 rn-3 + … + d1 ) + d0

ponendo la quantità entro le parentesi tonde ( dn-1 rn-2 + dn-2 rn-3 + … + d1 ) = Q0, possiamo scrivere:

N10 = r Q0d0

Tale espressione fa immediatamente pensare alla definizione euclidea di divisione, infatti:

N10 è il dividendo è il divisore  Q0 il quoziente d0 il resto.

Sappiamo che il dividendo è uguale al divisore per il quoziente più il resto, ossia:

d Q R

Ne consegue che effettuando la divisione intera fra N10 e il valore decimale della base cui si vuole passare (ad esempio 210) otterremo che il resto d0 è la cifra meno significativa nella rappresentazione in base r.

Si noti che tale cifra è sicuramente compresa nell’insieme 1, 2, …, – 1 in quanto il resto di una divisione intera è sicuramente inferiore al divisore r.

Se consideriamo adesso:

Qdn-1 rn-2 + dn-2 rn-3 + ….. + d1 = (dn-1 rn-3 + dn-2 rn-4 + … +d2) + d1 = r Q1d1

possiamo ancora una volta paragonare Q0 = r Q1d1 con la definizione euclidea, avendo individuato la cifra di posto 1 (d1) nella nuova rappresentazione.

Iterando il procedimento ci fermeremo quando Qi = 0.

Esempio: Convertire in forma binaria N10=331

DivisioneQuozienteResto (ai)
331 : 21651
165 : 2821
82 : 2410
41 :2201
20 : 2100
10 : 250
5 : 221
2 : 210
1 : 201

quindi:              (331)10 = (101001011)2

Operazioni aritmetiche tra numeri binari

Il calcolatore ha al suo interno dei dispositivi adatti ad effettuare le operazioni elementari sui numeri

binari: moltiplicazione, somma, divisione e sottrazione.

Dato che il sistema di numerazione binario è posizionale, è evidente che le leggi che regolano tali operazioni sono identiche a quelle dell’aritmetica dei numeri decimali, tenendo conto della base del sistema di rappresentazione e del numero di bit che si vuole utilizzare.
Supponiamo d’avere due numeri binari

A n-1A i+1 Ai A i-1A1A0

B n-1B i+1 Bi Bi-1B1B0  

che utilizzano bit  (se uno dei due ha bit basta aggiungere – zeri davanti).

Addizione

A iB iSommaRiporto
0000
0100
1010
1101

Sottrazione

A iB iDiff.Riporto
0000
0111
1010
1100

Shift

Si vuole introdurre una nuova operazione detta di scorrimento o meglio di shift che non trova un diretto riscontro sulle operazioni che facciamo sul sistema decimale.

Per tale operazione è fondamentale stabilire il numero di bit che si utilizzano.
L’operazione di scorrimento può essere effettuata sia a sinistra sia a destra.

Shift a sinistra

Se ho scorrimento a sinistra il bit di posto va ad occupare la posizione + 1, il bit più significativo viene eliminato e il bit meno significativo assume valore zero.

Supponiamo di avere il numero 001011 di 6 bit e di effettuare shift a sinistra.

Numero iniziale 0 0 1 0 1 1 11(10)

1° shift a sinistra 0 1 0 1 1 22(10)
2° shift a sinistra 1 0 1 1 0 0 44(10)
3° shift a sinistra 0 1 1 0 0 0 24(10)
4° shift a sinistra 1 1 0 0 0 0 48(10)
5° shift a sinistra 0 0 0 0 0 32(10)
6° shift a sinistra 0 0 0 0 0 0 0(10)  

Come si vede, finché non esce il primo bit di valore 1 (ossia diverso da zero), è come se moltiplicassimo per la base (essendo la base 2 in pratica raddoppiamo il numero).
Ciò avviene in modo simile in base 10: se stabiliamo di avere 4 cifre, il numero 0047 dopo uno shift varrà 0470, dopo due shift 4700.

In ogni caso dopo aver operato un numero di shift pari al numero di bit stabiliti il numero varrà zero e continuerà ad esserlo operando ulteriori scorrimenti a sinistra.

Rappresentazione dei numeri relativi

Fino ad ora abbiamo trattato numeri interi positivi, ma per le esigenze di calcolo è importante saper rappresentare numeri relativi.

Esistono almeno 3 modi per rappresentare i numeri relativi:

  • 1. rappresentazione in modulo e segno
  • 2. rappresentazione in complemento alla base (normalmente chiamata complemento a 2)
  • 3. rappresentazione in complemento alla base diminuita (chiamata complemento a 1)

Di fatto tutti gli elaboratori (con pochissime eccezioni) utilizzano, per la rappresentazione dei numeri relativi, la rappresentazione in complemento a due.

Modulo e segno

È la più facile da intuire ed è quella che ha una corrispondenza diretta con la nostra usuale rappresentazione dei numeri.
Noi anteponiamo al valore assoluto di un numero un simbolo che denota se esso è positivo o negativo.

Utilizziamo 2 entità: il modulo ed il segno.

Ad esempio +3 e -3 hanno stesso modulo (3) ma segno differente.

Tenendo presente che il segno deve essere rappresentato in binario possiamo facilmente intuire come ottenere un numero binario relativo. Stabilito il numero di bit, il bit più significativo ha valore di segno:

  • 1. se 0 il segno è +
  • 2. se 1 il segno è –

È evidente che se utilizziamo bit, uno verrà sacrificato per rappresentare il segno. Si noti che anche in questo caso è fondamentale stabilire il numero di bit che si utilizzano.Complemento alla base (Complemento a 2)

Stabilito il numero di bit, supponiamo n, il bit più significativo ha peso: -(2n-1)

Sulla base di questa considerazione possiamo riscrivere quella formula che, data la sequenza di bit, mi esprimeva il valore vero del numero:

Nvalore = – dn-1 (2n-1) + dn-2 2n-2 + …+ d0 20

Data una sequenza di bit che rappresenta un numero relativo in complemento a due posso ricavare il valore vero del numero sulla base della relazione appena esposta.

Esempio:

Nvalore 
= 0101(C2)   N = -0 *(23) + 1 * 22 + 0 * 21 + 1 * 20 = 4 + 1 = 5

Nvalore = 1011(C2)   N = -1* (23) + 0 * 22 + 1 * 21 + 1 * 20 = -8 + 2 + 1= -5

Complemento alla base diminuita (Complemento a 1)

Stabilito il numero di bit, supponiamo n, il bit più significativo ha peso: -(2n-1-1)

Sulla base di questa considerazione possiamo riscrivere quella formula che, data la sequenza di bit, mi esprimeva il valore vero del numero:

N
valore = – dn-1 (2n-1-1) + dn-2 2n-2 + …+ d0 20

Data una sequenza di bit che rappresenta un numero relativo in complemento a 1 posso ricavare il valore vero del numero sulla base della relazione appena esposta.

Esempio:

Nvalore = 0101(C1) N = -0 *(23-1) + 1 * 22 + 0 * 21 + 1 * 20 = 4 + 1 = 5

Nvalore = 1011(C1) N = -1* (23-1) + 0 * 22 + 1 * 21 + 1 * 20 = -7 + 2 + 1= -4

Nella rappresentazione in complemento il primo bit mi dice se il numero è positivo o negativo, in particolare se il primo bit è 0 il numero è positivo, se il primo bit è 1 il numero è non positivo (ossia negativo o nullo).

Calcolo dell’opposto

Introduciamo un’operazione unaria detta complementazione negazione. Essendo il sistema binario a due cifre (0 e 1) negare un bit vuol dire scambiare 0 con 1 o viceversa. La complementazione si può applicare a tutti i bit che compongono il numero.

Vediamo com’è possibile calcolare l’opposto di un numero nelle tre rappresentazioni appena viste.

  • Modulo e segno -> Basta complementare il bit di segno.
  • Complemento alla base   -> si complementano tutti i bit -> al numero ottenuto si somma 1
  • Complemento alla base diminuita   -> si complementano tutti i bit.

Vantaggi del complemento a due.

Chiediamoci adesso perché i calcolatori utilizzano al loro interno la notazione in complemento a 2.

Corrispondenza univoca fra rappresentazione binaria e numero decimale

Come abbiamo visto prima il complemento a due è l’unico sistema di rappresentazione che con bit esprime esattamente 2numeri interi. È evidente il vantaggio di associare ad ogni combinazione 0-1 un valore univoco.

Semplificazione dei circuiti

Un altro vantaggio è che la rappresentazione in complemento alla base semplifica la realizzazione dei circuiti.
Si supponga di essere in modulo e segno e di rappresentare in questa notazione i numeri +5 e –5, utilizzando 4 bit:

+5 0101(MS)
-5 1101(MS)

supponiamo di volerli sommare: applichiamo le regole viste circa la somma dei numeri binari:

0101+
1101=
_____
0010 (MS)

Il risultato è +2. Dove è l’errore?

Abbiamo applicato le regole algebriche di somma bit a bit tra numeri binari senza tenere conto che il bit più significativo ha la funzione di segno. L’errore è stato quello di considerare i numeri 0101 e 1101 come numeri binari assoluti. In effetti se dovessimo effettuare l’operazione correttamente dovremmo scorporare il primo bit dagli altri e non potremmo applicare le regole di somma tra numeri binari opposti in segno. Dovremmo ricordarci che la somma tra numeri di segno opposto di fatto corrisponde alla differenza.

Tutti questi ragionamenti dobbiamo farli effettuare ad un elaboratore.

Considerazioni analoghe valgono anche per il complemento alla base diminuita. Consideriamo, invece, la rappresentazione in complemento a due, scriviamo il numero +5 ed il numero –5, utilizzando 4 bit, e sommiamoli:

+5 0101+
-5 1011=
________
     0000(C2)

Tale somma viene 0, esattamente come ci si aspetta. In effetti in notazione complemento a 2 si possono effettuare le operazioni aritmetiche applicando le regole usuali dell’algebra binaria senza dover scorporare il bit di segno. Da un punto di vista dell’architettura del calcolatore i circuiti saranno sempre gli stessi trattando tutti i bit allo stesso modo e semplificando enormemente la loro realizzazione e il costo finale dell’elaboratore.

Nel caso del modulo e segno avremmo dovuto avere un circuito che trattava il modulo e uno che trattava il segno, e quindi il circuito sarebbe stato complessivamente più critico, più complesso.

Riduzione del numero di circuiti

Poiché in complemento a due i circuiti trattano tutti i bit allo stesso modo si può ad esempio ricondurre la sottrazione sempre ad una somma. Si supponga di voler eseguire l’operazione: +5 – (+3). Dovremmo avere un circuito che realizza la sottrazione.

In realtà la sottrazione può essere effettuata come una somma: +5 + (-3), basta individuare l’opposto del secondo addendo.

Rappresentazione in virgola mobile

Un numero è esprimibile come:

=  rE

dove:

  • ± è il segno del numero (positivo o negativo)
  • è la mantissa e rappresenta le cifre essenziali (è un numero in valore assoluto)
  • è l’esponente cui elevare la base (è un numero relativo)

Dato un qualsivoglia numero, si può esprimere secondo questa notazione.

Ad esempio:

= 1260 potrebbe esprimersi per esempio nei seguenti diversi modi:

1260 * 100
1.260 * 10+3
0.126 * 10+4
12600 * 10-1

È evidentemente preferibile avere una rappresentazione unica, e quindi bisogna cercare di definire uno standard di rappresentazione.

A tal fine si utilizza la notazione scientifica in forma normalizzata:

la mantissa è espressa come numero frazionario compreso fra la base elevata a -1 e 1:

-1 <= < 1 (in base 10 avremo: 0.1 <=  < 1 )

In tal modo non può aversi ambiguità: si stabilisce una corrispondenza biunivoca fra entità numerica e sua rappresentazione.

Mantissa normalizzata equivale ad affermare che la prima cifra dopo la virgola è diversa da zero.

Ad esempio:

  • 0.002 non è in forma normalizzata
  • 0.3 è in forma normalizzata

Supponiamo che la mantissa sia codificata su 3 cifre e l’esponente sia codificato su 2 cifre.

Vogliamo calcolare l’intervallo di rappresentazione (il numero massimo ed il numero minimo esprimibile in queste condizioni).

Il valore massimo lo otterremo quando mantissa ed esponente hanno valore massimo.

Nel nostro caso = 0.999 che, per semplicità, approssimiamo a 1 ed = +99 e quindi

NMAX = +0.999 * 1099 che per l’approssimazione fatta è circa uguale a 10+99.

Analogamente il più piccolo valore è circa –1099, mentre il valore frazionario più piccolo è 10–99.

Avendo accertato che questa rappresentazione dei numeri è adeguata a rappresentare grandi intervalli dobbiamo capire come trasferire il tutto alla base 2 per poterla utilizzare mediante l’elaboratore.

A tal scopo dobbiamo riscrivere la formula precedentemente vista secondo questa nuova notazione:

= (-1) E

dove vale o zero o uno.

-3.02110 verrebbe espresso con (-1)1 * 0.3021 * 10+1

+3.02110 verrebbe espresso con (-1)0 * 0.3021 + 10+1

Avendo fissato la base dobbiamo memorizzare solo le 3 entità (SME).

Nel caso del numero -3.021 (1; 0.3021; +1).


Codifica della virgola mobile nell’elaboratore

La base è = 2. La mantissa è, nella forma normalizzata, un numero frazionario compreso fra 2–1 e 1, ossia 0.5 < < 1 (in pratica viene rappresentato in virgola fissa con la virgola posta all’estrema sinistra della sequenza di bit).

L’esponente è un numero relativo che viene rappresentato in complemento a 2 (in realtà si usa la rappresentazione con l’esponente polarizzato).

Ricordandoci che l’elaboratore lavora su un insieme di bit che è potenza di 2, nella maggior parte dei calcolatori la rappresentazione dei numeri in virgola mobile avviene su 32 bit così suddivisi:

il primo bit per il segno (quello a sinistra: 0 = segno positivo, 1 = segno negativo)
8 bit per l’esponente
23 bit per la mantissa.

±EsponenteMantissa
18 bit23 bit

Vediamo l’intervallo di rappresentazione.

Ricordandoci la formula scritta precedentemente, il massimo numero positivi sarà dato da 0.111111…1 ossia circa 1 che moltiplichiamo per 2 elevato al massimo valore intero codificabile su 8 bit in complemento a due, che è +127, quindi:

NMAX = +0.111111…1 * 2+127 » +1038

NMIN = -1038


Dalla stessa categoria