Solo l'esponente viene calcolata utilizzando la rappresentazione per eccessi (biased). per la virgola mobile singola abbiamo per rappresentare il numero 32 bit:
1 per il segno
8 per l'esponente
23 per la mantissa
l'esponente , che utilizza 8 bit, può rappresentare 256 valori, però nell'IEEE 754, i valori 0 e 255 sono utilizzati per rappresentari valori speciali( infiniti o NaN), i restanti 254 valori vengono calcolati con un eccesso, detto 'bias', che nella virgola mobile singola è 127.
faccio un esempio col tuo numero: vogliamo rappresentare in virgola mobile singola 8,25.
- tramutiamo in binario la parte intera (si divide per 2, si prende il resto e si riprocede col quoziente fino a quando non si ha quoziente 0):
numero quoz rest
8 4 0
4 2 0
2 1 0
1 0 1
rappresentazione di 8 in binario = 1000 (si parte dall'ultimo resto)
- tramutiamo in binario la parte decimale (si moltiplica per 2, si usa la parte intera per la cifra binaria e si ripete sulla parte decimale fino a quando abbiamo come parte decimale 0):
numero result intera decimale
0.25 0.5 0 .5
0.5 1.0 1 .0
la rappresentazione binaria di 0,25 è 01 (si parte dal primo)
- si uniscono le due rappresentazioni (intera.decimale) = 1000.01 * 2^0
- si sposta il punto fino all'ultimo 1 di sinistra : 1000.01 -> 1.00001 *2^3 (abbiamo 3 perché ci siamo spostati di 3 posizioni)
- ora costruiamo il numero in virgola mobile:
- prime il segno: 8,25 è positivo quindi il priomo bit è 0 (1 se negativo)
- calcoliamo l'esponente, il bias è di 127 e si aggiunge (3 + 127 = 130),il binario in 8 bit è 10000011
-l'1 prima del punto è sottointeso nella rappresentazione (numero 'normalizzato') quindi nella mantissa vanno i rimanenti bit, la mantissa di 23 bit pertanto sarà 00001(si aggiungono gli 0 per raggiungere 23 bit)
- il numero in virgola mobile singola verrà composta in questo modo:
1 bit 8 bit 23 bit
MSB |segno|esponente|mantissa| LSB
quindi 1|10000011|00001000000000000000000
Spero che l'esempio ti faccia capire meglio