Concetti Chiave
- La notazione floating-point permette di rappresentare un'ampia gamma di valori attraverso una frazione (mantissa) e un esponente, garantendo una precisione variabile.
- Esiste una codifica standard per i numeri floating-point che prevede valori di mantissa compresi tra 0.1 e 1, assicurando rappresentazioni normalizzate.
- Non tutti i numeri reali possono essere espressi correttamente in notazione floating-point, portando a errori di arrotondamento quando si utilizzano i numeri più vicini rappresentabili.
- Il sistema floating-point presenta un intervallo di spazio tra i numeri esprimibili non costante, con un errore relativo che rimane costante al variare dei valori rappresentati.
- Lo standard IEEE, sviluppato dal Prof. William Kahan, stabilisce tre formati per la rappresentazione dei numeri floating-point e definisce le regole per forme normalizzate e non normalizzate.
Sistema floating-point = notazione in cui la gamma di valori esprimibili è indipendente dal numero di cifre significative
n = f * 10^e dove f = frazione/mantissa (determina la precisione) ed e = esponente (determina la gamma dei valori)
Caratteristiche e limiti del floating-point
La notazione floating-point consente più rappresentazioni per uno stesso numero, perciò è stata definita una codifica standard (o normalizzata) in cui i valori di f sono compresi tra 0.1 e 1 (0.1 ≤ f
Dopo aver fissate le caratteristiche di un numero floating-point (numero di cifre della mantissa e dell’esponente) sono determinati anche gli intervalli di numeri rappresentabili, ma non tutti i numeri reali appartenenti all’insieme di numeri rappresentabili possono essere espressi correttamente tramite un floating-point (es. periodici).
Quando il risultato non si può esprimere correttamente viene usato il numero rappresentabile più vicino, in questo caso si commette un errore di arrotondamento
Lo spazio tra numeri floating-point esprimibili non è costante e cresce al crescere dei valori rappresentabili, ma l’errore relativo rimane costante, cioè l’errore di arrotondamento espresso in funzione del valore rappresentato. Per aumentare la densità dei numeri è necessario aumentare il numero di cifre della mantissa.
Standardizzazione e precisione
Fino agli anni 80 con lo standard IEEE la rappresentazione dei floating-point non era fissata. Questo standard è stato studiato dal Prof. William Kahan, che prevede tre formati: singola precisione, doppia precisione, precisione estesa.
Lo standard prevede di rappresentare i numeri in:
-- forma normalizzata:
- la mantissa binaria deve presentare un 1 a sinistra della virgola binaria perciò queste non vengono memorizzate poiché considerate implicite.
- per evitare confusione con una frazione tradizionale la combinazione di 1 implicito, virgola e 23/52 cifre significative è chiamato significando (non frazione o mantissa)
- ha e>0 e 1≤s
- lo 0 non è rappresentabile con questo modo, quindi tutti i bit di f ed e posti a 0
- l’infinito ∞ è rappresentato quando tutti i bit dell’esponente sono 1
- non vengono sfruttati appieno i valori rappresentabili con 32 e 64 bit
- il numero più piccolo rappresentabile con 32 bit è 1.0x2-126
-- forma non normalizzata:
- può rappresentare valori in singola precisione minori di 2-126 fino a 2-150
- tutti i bit dell’esponente sono posti a 0 (configurazione che indica forma de normalizzata)
- il bit della mantissa a sinistra della virgola è imposto implicitamente a 0
- il numero più piccolo rappresentabile è composto da mantissa con tutti 0 eccetto il bit più a destra
- questa rappresentazione comporta una progressiva perdita di cifre significative
Domande da interrogazione
- Qual è la definizione di sistema floating-point e come si esprime un numero in questa notazione?
- Quali sono le caratteristiche della codifica standard per i numeri floating-point?
- Come influisce lo standard IEEE sulla rappresentazione dei numeri floating-point?
- Quali sono le differenze tra forma normalizzata e non normalizzata nei numeri floating-point?
Il sistema floating-point è una notazione in cui la gamma di valori esprimibili è indipendente dal numero di cifre significative. Un numero è espresso come n = f * 10^e, dove f è la frazione/mantissa e e è l'esponente.
La codifica standard prevede che i valori di f siano compresi tra 0.1 e 1, e consente più rappresentazioni per lo stesso numero. Tuttavia, non tutti i numeri reali possono essere espressi correttamente, portando a errori di arrotondamento.
Fino agli anni '80, la rappresentazione dei floating-point non era fissata. Lo standard IEEE, studiato dal Prof. William Kahan, prevede tre formati (singola, doppia e estesa precisione) e stabilisce regole per la forma normalizzata e non normalizzata dei numeri.
Nella forma normalizzata, la mantissa deve avere un 1 a sinistra della virgola binaria e non rappresenta lo zero. Nella forma non normalizzata, i bit dell'esponente sono a 0 e la mantissa ha un bit a sinistra della virgola impostato a 0, comportando una perdita di cifre significative.