I calcolatori usano la rappresentazione dei numeri in base 2, e usano la rappresentazione dei numeri in virgola mobile normalizzata.
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.
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.
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).
Lo spacing diventa 1 quando
, ovvero
,
. Quindi, nell'intervallo
lo spacing è uguale a 1 e ci sono solo numeri interi.
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,
.
Ogni numero occupa 64 bit e si utilizzano:
- 1 bit per il segno del numero
- 11 bit riservati all'esponente (shiftato di 1023)
- 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.