Cos'è l'aritmetica floating-point

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

Rappresentazione in virgola fissa in base 10

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

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

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

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

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