RAPPRESENTAZIONE DEI NUMERI REALI Il dover usare un numero finito di bit, obbliga il calcolatore a rappresentare solo numeri razionali. L’operazione di troncamento si renderà necessario nel caso di: • Numeri irrazionali (p.e. 20.5= 1,414213562….) • Numeri trascendentali (p.e. pi.greco= 3,141592654 ….) Un elaboratore tratta solo numeri razionali approssimati RAPPRESENTAZIONE IN VIRGOLA FISSA L’ideale posizione della virgola rimane sempre la stessa. Con 16 bit suddivisi in due campi da 8 bit, il numero: 0,00000011011 verrebbe rappresentato così (per il segno e cioè +) 00000000,00000011 con il risultato che verrebbero perse tre cifre significative, mentre i sette bit riservati alla parte intera sarebbero sostanzialmente inutilizzati RAPPRESENTAZIONE IN VIRGOLA MOBILE (FLOATING POINT, FP) Numero reale = [+-]m*2[+-]c m sta per caratteristica ed è un numero compreso tra zero e uno c è l’esponente della base 2 e viene chiamato caratteristica Per esempio: • 435,375= [+-]m*2 [+-]c 9 9 2 = 512 appena > 435 quindi x*2 = 435,375 x= 0,85034179 (mantissa) e 9 =caratteristica • 0,0040625= [+-]m*2 [+-]c -7 -7 2 = 0,0078125 appena > 0,0040625 quindi x*2 = 0,0040625 x= 0,52 (mantissa) e -7 =caratteristica Così l’elaboratore assegna un certo numero di bit alla: • mantissa (che assicura la precisione al numero) • caratteristica (che assicura un ampio range di numeri rappresentabili Per esempio se abbiamo 4 byte (32 bit) abbiamo 2 bit per il segno della mantissa e 22 caratteristica, 22 bit per la mantissa (precisione 1/2 ) e i rimanenti 8 per la caratteristica (range rappresentabile 2^2^8= +- 2 256 )