18.01.2015 Views

Appunti di Calcolo Numerico - Esercizi e Dispense - Università degli ...

Appunti di Calcolo Numerico - Esercizi e Dispense - Università degli ...

Appunti di Calcolo Numerico - Esercizi e Dispense - Università degli ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

3.4. Rappresentazione IEEE dei numeri <strong>di</strong> macchina<br />

Esempio<br />

Esempio 3.3.3 Scriviamo il numero 11 , che è 1.1 in base 10, nella base 2.<br />

10<br />

Per la parte intera:<br />

Per la parte decimale:<br />

: 2 = quoziente resto<br />

.1 × 2 = 0.2 x<br />

1 0 1 x −1 = 0<br />

0<br />

.2 × 2 = 0.4 x −2 = 0<br />

.4 × 2 = 0.8 x −3 = 0<br />

.8 × 2 = 1.6 x −3 = 1<br />

.6 × 2 = 1.2 x −4 = 1<br />

.2 × 2 = 0.4 x −5 = 0<br />

.4 × 2 = 0.8 x −6 = 0<br />

.8 × 2 = 1.6 x −7 = 1<br />

.6 × 2 = 1.2 x −8 = 1<br />

.2 × 2 = 0.4 x −9 = 0<br />

Osserviamo che nella parte decimale si ripetono all’infinito le cifre 0011. Il numero in base 2 si scrive<br />

quin<strong>di</strong> come: 1.00011<br />

} {{ } 0011 } {{ } ...<br />

3.4 Rappresentazione IEEE dei numeri <strong>di</strong> macchina<br />

Lo sviluppo dei calcolatori ha promosso e sviluppato l’uso del sistema binario, in cui ciascun numero è<br />

rappresentato da una successione <strong>di</strong> cifre binarie (0 e 1). Ma come avviene la rappresentazione <strong>di</strong> un numero<br />

nel calcolatore Come rappresentare un numero a infinite cifre in maniera accurata utilizzando solo un<br />

numero finito <strong>di</strong> cifre<br />

Lo standard IEEE (Institute of Electrical and Electronics Engineers), oggi utilizzato dalla maggior parte dei<br />

calcolatori, è dato dalla rappresentazione in virgola mobile (floating point). Esiste anche un tipo <strong>di</strong> rappresentazione<br />

in virgola fissa (fixed point), ma in genere è preferita quella in floating point, e noi ci soffermeremo<br />

solo su questa.<br />

Ripren<strong>di</strong>amo l’esempio proposto in Sezione 3.2, dove abbiamo scritto 1 in base 10 come<br />

3<br />

(<br />

1<br />

0<br />

3 = 0.3333333... = 10 0 + 3<br />

10 1 + 3<br />

10 2 + 3<br />

10 3 + 3 )<br />

10 4 ... × 10 0<br />

Questo è un esempio <strong>di</strong> numero scritto in virgola mobile: un qualunque numero x, in base 10, si può<br />

scrivere sotto la forma x = f 10 e dove f rappresenta la mantissa del numero e e è l’esponente (intero) della<br />

base con cui stiamo rappresentando il numero stesso, che dà informazioni sulla parte intera del numero.<br />

Ci sono <strong>di</strong>verse rappresentazioni in virgola mobile, tutte equivalenti tra loro. Per esempio 12.5 = 1.25 ×<br />

10 1 = 0.125×10 2 = 0.000125×10 5 . Si parla <strong>di</strong> virgola mobile normalizzata quando la mantissa ha una singola<br />

cifra <strong>di</strong> valore <strong>di</strong>verso da zero a sinistra della virgola, quin<strong>di</strong>, in base 2, la mantissa è del tipo 1.qual cosa.<br />

La rappresentazione in virgola mobile normalizzata in base 2 è quella utilizzata nello standard IEEE: i<br />

numeri si possono scrivere nella forma x = f 2 e . Al calcolatore, tuttavia, non possiamo rappresentare numeri<br />

con una mantissa a infinite cifre, perciò f = ±1.f −1 f −2 ... f −n e e = ±e Ne−1 e Ne−2 ...e 0 ., dove f −1 , f −2 ,..., f −n ,<br />

e e Ne−1 ,e Ne−2 ,...,e 0 sono le cifre che caratterizzano rispettivamente la mantissa e l’esponente del numero<br />

in virgola mobile normalizzata in base 2, e quin<strong>di</strong> possono valere 1 o 0. Abbiamo n cifre per la mantissa (in<br />

realtà sono n + 1 ma poichè la rappresentazione è normalizzata f 0 = 1) e Ne per l’esponente. Nel sistema<br />

binario, le cifre vengono chiamate bits ( binary <strong>di</strong>gits): quin<strong>di</strong> n bits sono riservati per la mantissa, Ne per<br />

l’esponente.<br />

23

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!