Introduzione

Un numero razionale è un numero che può essere scritto nella forma $ \frac{a}{b} $, dove $ a$ e $b$ sono numeri interi e $ b \neq 0 $. Ad esempio:

  • $ \frac{1}{2} $
  • $ -\frac{3}{4} $
  • $ 5 $ (che può essere scritto come $ \frac{5}{1} $)

I numeri razionali includono sia i numeri interi (che sono razionali con denominatore uguale a 1) sia le frazioni, e coprono sia i numeri positivi che negativi.

La rappresentazione dei numeri in memoria è fondamentale per lo sviluppo di algoritmi efficienti e precisi nelle moderne architetture di calcolo. Le tre modalità principali per rappresentare i numeri decimali in formato binario sono la codifica a virgola fissa, la codifica a virgola mobile e la codifica in virgola mobile standard IEEE 754. Questo articolo analizza i principi di funzionamento, vantaggi, svantaggi e applicazioni di queste tre rappresentazioni.

Codifica a Virgola Fissa

La rappresentazione a virgola fissa si basa su una posizione fissa della virgola, che separa la parte intera da quella frazionaria. L’intervallo e la precisione dei numeri rappresentabili dipendono dalla lunghezza del numero e dalla posizione fissa della virgola.

Struttura

Un numero a virgola fissa viene solitamente rappresentato come: $ N = I + F $ Dove:

  • $ I $ rappresenta la parte intera.
  • $ F $ rappresenta la parte frazionaria.

Per esempio, un numero a 16 bit può essere diviso in 8 bit per la parte intera e 8 bit per la parte frazionaria. In un contesto binario, il numero 6,25 potrebbe essere rappresentato come: $ 0110.0100_2 $ Dove “0110” rappresenta il numero intero (6) e “0100” rappresenta $ \frac{1}{4} $.

Vantaggi

  • Efficienza di calcolo: Le operazioni di addizione, sottrazione e moltiplicazione sono veloci, poiché l’hardware non deve spostare la virgola.
  • Determinismo: I numeri a virgola fissa sono particolarmente utili in applicazioni real-time, come l’elaborazione audio o video, dove l’accuratezza e il controllo dell’intervallo sono critici.

Svantaggi

  • Limitata gamma: I numeri rappresentabili in virgola fissa hanno un intervallo limitato e una precisione bassa rispetto alla virgola mobile.
  • Gestione manuale della scala: L’utente deve determinare manualmente la scala per garantire che i valori rientrino nell’intervallo previsto.

Codifica a Virgola Mobile

La rappresentazione a virgola mobile risolve alcuni dei limiti della virgola fissa permettendo alla virgola di “fluttuare”, spostandosi in base all’esponente.

Struttura

Un numero a virgola mobile è generalmente rappresentato nella forma: $ N = S \times M \times 2^E $ Dove:

  • ( S ) è il segno (positivo o negativo).
  • ( M ) è la mantissa (o frazione).
  • ( E ) è l’esponente, che determina dove collocare la virgola binaria.

Per esempio, il numero 6,25 in virgola mobile può essere rappresentato come: $ 1.1001 \times 2^2 $

Vantaggi

  • Ampia gamma dinamica: I numeri a virgola mobile possono rappresentare valori molto piccoli e molto grandi, aumentando la flessibilità in contesti di calcolo scientifico e ingegneristico.
  • Precisione: La precisione può essere variata tramite la scelta di lunghezza della mantissa e dell’esponente.

Svantaggi

  • Complessità del calcolo: Le operazioni su numeri a virgola mobile sono più complesse e richiedono un maggior numero di cicli di clock rispetto alla virgola fissa.
  • Possibile perdita di precisione: Le approssimazioni dovute al ridimensionamento della mantissa possono introdurre errori numerici.

Standard IEEE 754

Lo standard IEEE 754 definisce una rappresentazione rigorosa per i numeri in virgola mobile, con specifiche per gestire situazioni particolari, come gli “overflow”, i numeri subnormali e i NaN (Not a Number).

Formato

Nello standard IEEE 754, un numero è rappresentato con tre componenti: $ N = (-1)^S \times (1.M) \times 2^{E-bias} $ Dove:

  • ( S ) è il bit di segno (0 per positivo, 1 per negativo).
  • ( M ) è la mantissa normalizzata.
  • ( E ) è l’esponente con un bias, che serve a rendere l’esponente sempre positivo.

I formati più comuni sono:

  • Singola precisione (32 bit):
    • 1 bit per il segno
    • 8 bit per l’esponente
    • 23 bit per la mantissa
  • Doppia precisione (64 bit):
    • 1 bit per il segno
    • 11 bit per l’esponente
    • 52 bit per la mantissa

Vantaggi

  • Portabilità e standardizzazione: Essendo uno standard internazionale, IEEE 754 garantisce che i calcoli siano consistenti su diverse architetture hardware.
  • Gestione degli errori: Lo standard prevede meccanismi per gestire gli errori di calcolo, inclusi overflow, underflow, e NaN.

Svantaggi

  • Complessità: L’implementazione di IEEE 754 richiede un hardware più complesso rispetto alla virgola fissa.
  • Approssimazioni: Come per qualsiasi rappresentazione a virgola mobile, ci possono essere errori di arrotondamento.

Confronto tra Virgola Fissa, Virgola Mobile e IEEE 754

CaratteristicaVirgola FissaVirgola MobileIEEE 754
Gamma dinamicaLimitataAmpiaAmpia
PrecisioneFissaVariabileDefinita dallo standard
Efficienza computazionaleAltaMediaMedia
Semplicità di implementazioneSemplicePiù complessa rispetto alla virgola fissaComplessa
PortabilitàLimitataVariabileStandard internazionale
ApplicazioniSistemi embedded, DSPCalcolo scientifico, graficaTutti i contesti che richiedono portabilità

Conclusioni

La scelta tra virgola fissa, virgola mobile e lo standard IEEE 754 dipende dall’applicazione e dai requisiti specifici in termini di precisione, gamma di valori e performance. La virgola fissa è ideale per applicazioni dove la precisione è determinante e i valori rappresentabili sono limitati, come i sistemi embedded. La virgola mobile, in particolare con IEEE 754, è essenziale in contesti che richiedono un’ampia gamma dinamica, come la grafica computerizzata e il calcolo scientifico.