Introduzione (Start point)

In un calcolo astronomico è necessario esprimere valori come la massa dell'elettrone (grammi) e la massa del sole (grammi).

Senza la notazione scientifica tali numeri sarebbero "dispendiosi" da rappresentare.
Notazione scientifica:

  • la rappresenta la mantissa
  • la è l'esponente

La rappresentazione informatica di questa notazione è la rappresentazione in virgola mobile o floating point.

Ecco una serie di esempi di numeri rappresentati (con notazione decimale) che sfruttano la notazione scientifica:

NumeroRappresentazione possibile 1Rappresentazione possibile 2Rappresentazione possibile 3

Come si nota dalla tabella sopra, la rappresentazione non è unica, cambiando i numeri prima o dopo la virgola o ancora l'esponente è possibile rappresentare lo stesso numero in modi diversi.
Tuttavia i valori:


  • Sono delle rappresentazioni che si dicono normalizzate poiché seguono determinate regole per essere rappresentate, ovvero uno zero prima della virgola e l'esponente tale da poter rappresentare il numero che si voleva inizialmente rappresentare.

Quello che si deve fare quindi è stabilire delle simili convenzioni per rappresentare i numeri in notazione scientifica in binario, come per esempio:

  • fissare la lunghezza della mantissa ad un valore costante
  • limitare l'esponente ad opportuni intervalli
  • utilizzare un esponente convenzionale che lo renda sempre positivo (qui entra in gioco la rappresentazione in eccesso dei numeri binari)
  • disporre i tre elementi: segno, esponente, mantissa in un ordine stabilito
SegnoEsponenteMantissa
+/-usa la codifica in eccessola vista sopra

Esempio con numeri decimali:

NumeroSegnoEsponenteMantissa
-
+

Gli esponenti sono rappresentati in eccesso 50.
Quindi il e il

Adesso vediamo un esempio di rappresentazione floating point con numeri binari su 32 bit

  • il primo bit rappresenta il segno della mantissa (0 per +, 1 per -)
  • 7 bit successivi rappresentano l'esponente (espresso in base 2) in notazione eccesso 64
  • gli ultimi 24 bit rappresentano la mantissa normalizzata

Esempio:

  • numero che si vuole rappresentare:
  • in rappresentazione binaria diventa: (ricordiamo che per spostare la virgola si divide per la base di rappresentazione, 2, quindi per pareggiare lo shift effettuato con la divisione, si aumenta l'esponente di 1 tante volte quante si è spostata la virgola)
  • in rappresentazione normalizzata:
SegnoEsponente eccesso 64Mantissa
0


esponente in eccesso 64:

Il range (gamma) di un numero in virgola mobile è determinata dal numero di cifre dell'esponente e la precisione dal numero di cifre della mantissa.

ATTENZIONE
Con i floating point in binario, si può simulare il sistema dei numeri reali, seppur con grandi differenze:
i numeri reali hanno la potenza del continuo, mentre i flaoting point sono in numero finito

Per esempio consideriamo rappresentazioni (espresse in base 10) con una mantissa di tre cifre con segno nel range più zero (davanti al numero) ed esponente di due cifre (con segno).

  • minimo numero negativo:
  • massimo numero negativo:
  • minimo numero positivo:
  • massimo numero positivo:
    Pasted image 20230426183832.png
  • Il numero di cifre della mantissa determina la densità dei punti, cioè la precisione delle approssimazioni
  • Il numero di cifre dell'esponente determina la dimensione degli intervalli dei numeri rappresentabili

Ovviamente è possibile che si verifichi overflow come abbiamo già trattato precedentemente, con la notazione in floating si può verificare anche l'underflow.

Prima della fine degli 70' ogni produttore aveva un suo formato flaoting point, poi la IEEE (un comitato per gli standard) decise di formalizzare uno standard per l'aritmetica floating point: IEEE 754.