Esercizi di conversione in formato Binary16
La sequenza di bit 1 01101 0011001000 è un numero in binary16, ossia un numero frazionario in virgola mobile espresso con un bit di segno, cinque di esponente in eccesso 15 e il resto mantissa.
Convertirlo in decimale.
Il primo bit 1 = bit per il segno: 0 = +; 1 = – quindi il nostro numero ha il segno –
Esponente = N – BIAS
BIAS = 2k-1 – 1 (dove k è il numero di bit con i quali viene codificato l’esponente; nel nostro caso 5) quindi avremo:
BIAS = 25-1 – 1 = 24 – 1 = 16 – 1 = 15
N = (01101)2 = 8+4+1 = 13 in base 10
Esponente = N – BIAS = 13 – 15 = –2
Consideriamo ora la Mantissa e trasformiamola in numero decimale
0 |
|
-1 |
-2 |
-3 |
-4 |
-5 |
-6 |
-7 |
-8 |
-9 |
-10 |
esponente |
|
|
1 |
. |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
mantissa |
|
|
20+2-3+2-4+2-7 = = 1+0,125+0,0625+0,078125 = 1,1953125 = 1,195 (abbiamo considerato solo 3 cifre significative dopo la virgola)
Dalla formula F = +/– M•2E cioè il numero F (floating) = segno (+ o –) Mantissa per 2 elevato all’Esponente avremo:
F = –1,195•2-2 –0,2988
Convertire il numero decimale 0,21 in formato binary16: un bit di segno, cinque di esponente in eccesso 15 e il resto mantissa.
Convertiamo la parte intera del numero (0)10 = (0)2
Ora convertiamo la parte decimale con il complemento a 2
0,21x2=0,42 cifra più significativa
0,42x2=0,84
0,84x2=1,68
0,68x2=1,36
0,36x2=0,72
0,72x2=1,44
0,44x2=0,88
0,88x2=1,76
0,76x2=1,52
0,52x2=1,04
0,04x1=0,08
0,08x2=0,16
0,16x2=0,32 cifra meno significativa
Scriviamo il numero sommando la parte intera a quella decimale (partendo a scrivere il numero binario della parte decimale dalla cifra più significativa):
0 + 0.0011010111000
Partendo da 0. per avere la prima cifra significativa 1 dobbiamo compiere 3 salti ottenendo:
1.1010111000•2-3 il nostro esponente è quindi -3
BIAS = 2k-1 – 1 (dove k è il numero di bit con i quali viene codificato l’esponente; nel nostro caso 5) quindi avremo:
BIAS = 25-1 – 1 = 24 – 1 = 16 – 1 = 15
Dalla formula Esponente = N – BIAS ricaviamo N
N = E+BIAS = -3 +15 = 12 che convertiamo in base 2
(12)10 = (01100)2 per cui il numero binario finale avrà segno positivo (0), Esponente = 12 (01100) e Mantissa = 1010111000
Il numero decimale 0,21 in binary16 = 0 01100 1010111000