Vai al contenuto

Calcolo numerico/Cos'è l'aritmetica floating point

Wikibooks, manuali e libri di testo liberi.
Indice del libro

I calcolatori usano la rappresentazione dei numeri in base 2, e usano la rappresentazione dei numeri in virgola mobile normalizzata.

Rappresentazione in virgola fissa in base 10

[modifica | modifica sorgente]

Consideriamo un qualsiasi numero reale , allora

dove , , parte intera, mantissa), e .

Equivalentemente, si scrive

In base , se supponiamo che non esista tale che , allora esiste unica la rappresentazione .

Supponiamo di considerare

violando l'ipotesi del teorema. Infatti, esiste tale che per ogni , si ha .

con il cambio di variabile , e tenendo conto che per ogni ,

e questa è la serie geometrica di ragione , quindi

e abbiamo trovato una rappresentazione differente del numero.

Il vantaggio della rappresentazione in virgola fissa è la semplicità. Lo svantaggio è l'uniformità. Fissiamo il numero di cifre della parte intera del numero e della sua parte decimale. I numeri che rappresentiamo sono equispaziati (uniformità). C'è quindi uno svantaggio se vogliamo lavorare contemporaneamente con numeri grandi e piccoli.

Rappresentazione equivalente in virgola mobile

[modifica | modifica sorgente]

Raccogliendo otteniamo:

Si mette in evidenza l'ordine di grandezza del numero.

Ad esempio,

Cambio di variabile:

e stiamo usando una rappresentazione in virgola mobile che mette in evidenza l'ordine di grandezza.

Il vantaggio è che l'ordine di grandezza del numero viene messo subito in evidenza. Inoltre, se abbiamo un numero fissato di cifre di mantissa, allora i numeri non sono più equispaziati.

Struttura dell'insieme F dei numeri macchina

[modifica | modifica sorgente]

Sono fissati , il numero di cifre di mantissa, che rappresentano il minimo e massimo esponente della base. Allora è

dove per le cifre vale che , e dove e dove .

Si pone per risparmiare cifre, perché ad esempio, invece di scrivere si scrive .

Consideriamo per semplicità , , , . Analizzo quindi la struttura di .

Ci si chiede qual è il più piccolo numero positivo che si riesce a rappresentare.

mentre

Sulla retta rappresentiamo , e i numeri prima di e oltre non possono essere rappresentati in .

Calcolo la differenza tra i due numeri: chiamiamo spacing la differenza tra un numero e il successivo, cioè, in questo caso, .

Lo stesso si ripete in tutti gli intervalli della forma oppure etc.

Per i numeri successivi a si ha un cambiamento. Infatti, tra numeri del tipo

Lo spacing è .

Considerando la rappresentazione in virgola mobile, si ha che quando i numeri sono piccoli sono più vicini fra loro, man mano che il loro valore assoluto aumenta i numeri si diradano.

L'equispaziatura è uguale per valori con lo stesso ordine di grandezza.

Consideriamo il caso generale . Allora si ha

1.

2.

Cambio di variabile:

e per la somma della serie geometrica:

3. Quantità di numeri positivi tra e (lo stesso vale per i negativi). Abbiamo cifre di mantissa, e le possibilità con cui possiamo sceglierle sono:

Considerando gli esponenti a disposizione:

4. Spacing: se poniamo , il suo successivo è , e lo spacing è nell'intervallo . In generale, in un intervallo , poniamo , e il successivo , quindi lo spacing è nell'intervallo (da ricordare).

Osservazione 1.1

[modifica | modifica sorgente]

Lo spacing diventa 1 quando , ovvero , . Quindi, nell'intervallo lo spacing è uguale a 1 e ci sono solo numeri interi.

Singola precisione

[modifica | modifica sorgente]

Per rappresentare un numero in singola precisione si hanno a disposizione 32 bit = 4 byte in base allo Standard i754, fissato nel 1985. In base 2, dei 32 bit, se ne usa 1 per il segno ( o ), 8 bit per l'esponente, 23 bit per la mantissa. Per evitare di utilizzare un bit per il segno dell'esponente, si considerano solo esponenti positivi.

In particolare,

L'esponente -126 viene rappresentato con 1, e tutti gli esponenti vengono traslati di +127, e l'esponente massimo viene rappresentato con 254.

è l'esponente che viene riservato allo zero, o per i numeri denormalizzati.

è riservato a infinito o al not a number (risultato di un'operazione non definita).

Uso 23 bit di mantissa, ma si ha un bit extra perché il primo bit è per forza uguale a 1 e non lo memorizzo.

Quindi, in singola precisione, .

Doppia precisione

[modifica | modifica sorgente]

Ogni numero occupa 64 bit e si utilizzano:

  1. 1 bit per il segno del numero
  2. 11 bit riservati all'esponente (shiftato di 1023)
  3. 52 cifre riservate alla mantissa, + un bit extra, quindi .

realmin e realmax indicano la barriera di underflow e la barriera di overflow, e nella doppia precisione ci sono 16 cifre decimali.