Successivo: , Su: Calcolo con precisione arbitraria   [Contenuti][Indice]


15.1 Una descrizione generale dell’aritmetica del computer

Sinora, abbiamo avuto a che fare con dati come numeri o stringhe. Ultimamente, comunque, i computer rappresentano ogni cosa in termini di cifre binarie, o bit. Una cifra decimale può assumere uno di 10 valori: da zero a nove. Una cifra binaria può assumere uno di due valori: zero o uno. Usando il sistema binario, i computer (e i programmi per computer) possono rappresentare e manipolare dati numerici e dati costituiti da caratteri. In generale, tanti più bit è possibile usare per rappresentare una determinata cosa, tanto maggiore sarà l’intervallo dei possibili valori che essa potrà assumere.

I moderni calcolatori possono eseguire calcoli numerici in almeno due modi, e spesso anche di più. Ogni tipo di calcolo usa una diversa rappresentazione (organizzazione dei bit) dei numeri. Le modalità di calcolo che ci interessano sono:

Calcolo decimale

Questo è il tipo di calcolo che s’impara alle scuole elementari, usando carta e penna (o anche una calcolatrice). In teoria, i numeri possono avere un numero arbitrario di cifre su ambo i lati del separatore decimale, e il risultato di un’operazione è sempre esatto.

Alcuni sistemi moderni possono eseguire calcoli decimali direttamente, tramite apposite istruzioni disponibili nell’hardware dell’elaboratore, ma normalmente si ha necessità di una speciale libreria software che consenta di effettuare le operazioni desiderate. Ci sono anche librerie che svolgono i calcoli decimali interamente per via software.

Anche se alcuni utenti si aspettano che gawk effettui delle operazioni usando numeri in base decimale,100 non è questo quello che succede.

La matematica coi numeri interi

A scuola ci hanno insegnato che i valori interi erano quei numeri privi di una parte frazionaria, come 1, 42, o -17. Il vantaggio dei numeri interi è che essi rappresentano dei valori in maniera esatta. Lo svantaggio è che i numeri rappresentabili sono limitati.

Nei calcolatori, i valori interi sono di due tipi: con segno e senza segno. I valori con segno possono essere negativi o positivi, mentre i valori senza segno sono sempre maggiori o uguali a zero.

Nei sistemi informatici, il calcolo con valori interi è esatto, ma il possibile campo di variazione dei valori è limitato. L’elaborazione con numeri interi è più veloce di quella con numeri a virgola mobile.

La matematica coi numeri a virgola mobile

I numeri a virgola mobile rappresentano quelli che a scuola sono chiamati numeri “reali” (cioè, quelli che hanno una parte frazionaria, come 3.1415927). Il vantaggio dei numeri a virgola mobile è che essi possono rappresentare uno spettro di valori molto più ampio di quello rappresentato dai numeri interi. Lo svantaggio è che ci sono numeri che essi non possono rappresentare in modo esatto.

I computer moderni possono eseguire calcoli su valori a virgola mobile nell’hardware dell’elaboratore, entro un intervallo di valori limitato. Ci sono inoltre librerie di programmi che consentono calcoli, usando numeri a virgola mobile, di precisione arbitraria.

POSIX awk usa numeri a virgola mobile a doppia precisione, che possono gestire più cifre rispetto ai numeri a virgola mobile a singola precisione. gawk ha inoltre funzionalità, descritte in dettaglio più sotto, che lo mettono in grado di eseguire calcoli con i numeri a virgola mobile con precisione arbitraria.

I calcolatori operano con valori interi e a virgola mobile su diversi intervalli. I valori interi normalmente hanno una dimensione di 32 bit o 64 bit. I valori a virgola mobile a singola precisione occupano 32 bit, mentre i valori a virgola mobile a doppia precisione occupano 64 bit. I valori a virgola mobile sono sempre con segno. Il possibile campo di variazione dei valori è mostrato in Tabella 15.1.

Rappresentazione numericaValore minimoValore massimo
Interi con segno a 32-bit-2.147.483.6482.147.483.647
Interi senza segno a 32-bit04.294.967.295
Interi con segno a 64-bit-9.223.372.036.854.775.8089.223.372.036.854.775.807
Interi senza segno a 64-bit018.446.744.073.709.551.615
Virgola mobile, singola precisione (circa)1,175494-383,40282338
Virgola mobile, singola precisione (circa)2,225074-3081,797693308

Tabella 15.1: Intervalli dei valori per diverse rappresentazioni numeriche


Note a piè di pagina

(100)

Non sappiamo perché se lo aspettino, ma è così.


Successivo: , Su: Calcolo con precisione arbitraria   [Contenuti][Indice]