Index
Related
Introduzione
Ogni numero binario in virgola mobile è composto da una tripla di valori:
- Segno (pos 0, neg 1)
- Esponente (quanti numeri fanno parte della parte intera)
- Mantissa (cifre dopo la virgola)
Vantaggi
- Rappresentazione mobile permette di ottimizzare al massimo l’utilizzo dei bit a disposizione, permettendo di utilizzare il miglior rapporto tra precisione della parte intera e della parte decimale in base al numero che dobbiamo rappresentare
Svantaggi
- Conversione meno intuitiva per l’essere umano
Standard IEEE754
Lo standard IEEE754 ha 3 categorie che variano nella precisione della rappresentazione
Half precision
- Totale: 16 bit
- Segno: 1 bit
- Esponente: 5
- Mantissa: 10
Single Precision
- Totale: 32 bit
- Segno: 1 bit
- Esponente: 8 bit
- Mantissa: 23 bit
Double Precision
- Totale: 64 bit
- Segno: 1 bit
- Esponente: 11 bit
- Mantissa: 52 bit
Notazione scientifica
Capire la notazione scientifica di un numero in binario è fondamentale per capire il funzionamento della virgola mobile
Lo stesso principio che si utilizza per la notazione scientifica di un numero in base 10 si può utilizzare per un numero in binario ma utilizzando potenze di due
Conversioni
B10 → B2 Floating Point
- Converto il numero in binario (utilizzando metodo virgola fissa)
- Sposto la virgola, trovando mantissa e l’esponente (forma: 1,M * 2^e )
- Aggiungo bias all’esponente (k)
- Converto esponente in binario
- Scrivo segno (pos = 0, neg = 1)
B2 Floating Point → B10
- Utilizzare formula:
- Convertire risultato in decimale usando metodo fixed point b2→b10
oss:
- s = segno
- M = mantissa
- e = esponente
- k = bias
Conversione numeri periodici
Quando si ha un numero binario periodico (virgola fissa) per rappresentarlo in virgola mobile bisogna avere degli accorgimenti
Quando si scrive la mantissa e non si anno abbastanza cifre per completarla invece di estenderla con degli zeri va estesa ricopiando la parte iniziale della mantissa
Bias
Il bias è un valore che dipende dalla precisione di rappresentazione, il suo scopo è correggere l’errore di bias negli esponenti.
Valori del bias
- Half precision:
?
- Single Precision:
127
- Double Precision:
?
Come si calcola?
oss:
E
è il numero di bit dell’esponente
Operazioni
Addizione
- Normalizziamo i due numeri (ovvero stesso esponente)
- Mantissa più grande sopra, più piccola sotto
- Se segno concorde somma se discorde sottrazione
- Segno del risultato è segno del più grande
Sottrazione
- Normalizziamo i due numeri (ovvero stesso esponente)
- Mantissa più grande sopra, più piccola sotto
- Se segno concorde somma se discorde sottrazione
- Segno del risultato è segno del più grande
Prodotto
- Sommare (prodotto) / sottrarre (differenza) gli esponenti
- Mantissa più grande va sopra, più piccola sotto
- Moltiplicare / dividere le mantisse
- Segno:
- Negativo (operandi discordi)
- Positivo (operandi concordi)
- l risultato potrebbe essere normalizzato (ovvero riportare alla rappresentazione standard (1,M) aggiustando esponente)
Divisione
- Sommare (prodotto) / sottrarre (differenza) gli esponenti
- Mantissa più grande va sopra, più piccola sotto
- Moltiplicare / dividere le mantisse
- Segno:
- Negativo (operandi discordi)
- Positivo (operandi concordi)
- l risultato potrebbe essere normalizzato (ovvero riportare alla rappresentazione standard (1,M) aggiustando esponente)