top of page

Rappresentazione in virgola mobile dei numeri reali

27 minuti fa
Tempo di lettura: 2 min

Come fa un computer a memorizzare un numero con la virgola? Anche in questo caso deve utilizzare soltanto due cifre, 0 e 1, e uno spazio di memoria limitato. La rappresentazione in virgola mobile permette di descrivere numeri molto grandi o molto piccoli attraverso un’idea simile alla notazione scientifica: una parte significativa moltiplicata per una potenza della base. Nel computer, però, la base è 2.

Lo standard IEEE 754 a precisione singola utilizza 32 bit, suddivisi in tre campi: 1 bit per il segno, 8 bit per l’esponente e 23 bit per la parte frazionaria della mantissa. Per costruire questa rappresentazione occorre convertire il numero in binario, normalizzarlo e codificare separatamente i tre campi. Nei numeri normalizzati, il primo 1 è implicito e non viene memorizzato; all’esponente si aggiunge invece un valore fisso, chiamato bias, pari a 127.

Avere a disposizione un numero finito di bit comporta una conseguenza: non tutti i numeri possono essere rappresentati esattamente. Anche un numero apparentemente semplice come 0,1 ha uno sviluppo binario periodico e deve essere approssimato.

L’applicazione qui sotto accompagna la conversione un passaggio alla volta: dalle divisioni e moltiplicazioni successive fino alla sequenza finale dei 32 bit. Il confronto tra il numero inserito e il valore effettivamente memorizzato permette di osservare anche gli effetti dell’arrotondamento.



Prima dello standard IEEE 754, produttori diversi adottavano soluzioni diverse per rappresentare i numeri e gestire gli arrotondamenti. Trasferire un programma da un computer a un altro poteva quindi riservare sorprese: un calcolo affidabile su una macchina poteva comportarsi diversamente su un’altra. Scrivere software scientifico preciso e trasferibile era un lavoro complicato.

Una svolta arrivò nella seconda metà degli anni Settanta. Nel 1976, Intel iniziò a progettare un coprocessore dedicato ai calcoli numerici. John Palmer, responsabile del progetto, coinvolse William Kahan, matematico dell’Università della California a Berkeley ed esperto degli errori di calcolo. Kahan contribuì poi ai lavori dello standard insieme, tra gli altri, a Jerome Coonen e Harold Stone. L’obiettivo era stabilire regole comuni, sostenibili anche nella costruzione dei processori.

Nel 1980 arrivò il coprocessore Intel 8087, che incorporava già molte delle idee della proposta in discussione. Lo standard fu pubblicato ufficialmente nel 1985, con il nome IEEE 754. Definiva i formati binari, tra cui quelli a 32 e 64 bit, ma anche le operazioni, gli arrotondamenti e la gestione di situazioni particolari, come risultati troppo grandi o operazioni prive di un risultato numerico.

Seguirono le revisioni del 2008 e del 2019. Dietro la suddivisione in segno, esponente e mantissa che studiamo a scuola c’è dunque una lunga collaborazione tra matematici, informatici e progettisti: rendere il comportamento dei calcoli più prevedibile, anche cambiando computer. Lo standard non elimina le approssimazioni, ma stabilisce regole precise per gestirle.


Commenti


bottom of page