Cos'è l'aritmetica floating-point

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 wikitesto]

Considero un qualsiasi numero reale , allora

dove , , ( parte intera, mantissa), e .

Equivalentemente, si scrive

Teorema 1.1

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

 


Esempio 1.2

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à. Fisso il numero di cifre della parte intera del numero e della sua parte decimale. I numeri che rappresento sono equispaziati (uniformità). C'è quindi uno svantaggio se vogliamo lavorare contemporaneamente con numeri grandi e piccoli.

Rappresentazione equivalente in virgola mobile[modifica | modifica wikitesto]

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

Ad esempio,

Cambio di variabile:
e sto 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 ho un numero fissato di cifre di mantissa, allora i numeri non sono più equispaziati.

Struttura dell'insieme F dei numeri macchina[modifica | modifica wikitesto]

Sono fissati , il numero di cifre di mantissa, che rappresentano il minomo 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 .

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

Ci si chiede qual è il più piccolo numero positivo che riesco a rappresentare.
mentre
Sulla retta rappresento , e i numeri prima di m e oltre M non possono essere rappresentati in .
Calcolo la differenza tra i due numeri: chiamo 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. Cambio di variabile:
    e per la somma della serie geometrica:
  2. quantità di numeri positivi tra e (lo stesso vale per i negativi).Ho cifre di mantissa, e le possibilità con cui posso sceglierle sono:
    Considerando gli esponenti a disposizione:
  3. spacing: se pongo , il suo successivo è , e lo spacing è nell'intervallo.In generale, in un intervallo , pongo , e il successivo , quindi lo spacing è nell'intervallo (da ricordare).
Osservazione 1.1

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

 

Singola precisione[modifica | modifica wikitesto]

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 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 viene rappresentato con 1, e tutti gli esponenti vengono traslati di , e l'esponente massimo viene rappresentato con .

è 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 wikitesto]

Ogni numero occupa bit e si utilizzano:

  1. 1 bit per il segno del numero
  2. 11 bit riservati all'esponente (shiftato di )
  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.

 PrecedenteSuccessivo