La rappresentazione dei numeri è basata su un sistema di numerazione, che comprende i simboli usati e le regole per interpretarli, ovvero calcolare il valore numerico corrispondente ai simboli usati. Ogni sistema di numerazione è identificato innanzitutto da una base, un numero intero, e da un insieme di simboli, detti cifre. Il numero di cifre sarà sempre pari alla base.
Per esempio, gli esseri umani adottano un sistema di numerazione in base dieci, il numero delle nostre dita, e le dieci cifre del sistema decimale sono i dieci simboli seguenti: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Un numero è quindi rappresentato da una sequenza di cifre.
Per interpretare un numero, ovvero conoscere il suo valore a partire dalla rappresentazione in cifre, si deve considerare la posizione che la cifra occupa nella sequenza. La posizione è letta da destra a sinistra: quella più a destra è detta cifra meno significativa, quella più a sinistra è detta cifra più significativa. Infatti il peso che una cifra ha nel valore del numero cresce spostandosi da destra a sinistra. Il peso è un numero pari alla base elevata alla posizione della cifra, imponendo la posizione zero alla cifra meno significativa.
Consideriamo il valore di un numero rappresentato in un sistema in base b da una sequenza di cifre
xyztq
la forma polinomiale corrispondente è la seguente:
q·b0+t·b1+z·b2 +y·b3+x·b4
Per esempio, il numero in rappresentazione decimale rappresentato dalla sequenza di cifre
1458
ha un valore pari a:
8·100+5·10+4·102 +1·103=8+50+400+1000.
Se l’esempio in base decimale sembra ovvio, non altrettanto risulta essere un esempio in una base meno familiare agli esseri umani. Per esempio, in base due, si hanno solo due cifre (0 e 1). Il numero
1010
ha un valore pari a
0·20+1·21+0·22 +1·23=2+8=10.
Nel calcolo del valore, generalmente si usa la base dieci, più familiare agli umani, e quindi di fatto la forma polinomiale può essere usata per trasformare una qualunque rappresentazione di cui siano noti la base e i simboli, nell’equivalente rappresentazione in base decimale.
Nel caso dell’informatica, le rappresentazioni più usate sono la quella binaria (base due, cifre 0, 1) e la quella esadecimale (base 16), i cui simboli sono le 10 cifre decimali con l’aggiunta delle lettere A, B, C, D, E, F. La rappresentazione esadecimale è utilizzata spesso come forma compatta della rappresentazione binaria, in quanto, vista la relazione che lega le due basi (16 è potenza di 2), quattro cifre decimali corrispondono a una cifra esadecimale.
La locuzione inglese binary digit (cifra binaria) viene spesso contratta in bit, quindi, in ultima analisi, qualunque numero viene espresso come sequenze di bit (uni e zeri). Otto bit vengono convenzionalmente indicati con il termine byte. In base alla forma polinomiale, un byte può rappresentare al massimo (cioè tutte le cifre uguali a uno) un numero pari a 255.
Quanto visto sulla rappresentazione dei numeri nelle varie basi faceva riferimento ai numeri interi positivi, ma. con opportune ipotesi, la rappresentazione binaria può essere estesa anche a numeri negativi, per esempio utilizzando un bit per il segno e i rimanenti bit per il valore assoluto. Per i numeri reali, si utilizza una rappresentazione mantissa-esponente, ovvero esprimendo un generico numero reale r come
r=m·2e
e assegnando un opportuno numero di bit per rappresentare la mantissa m e l’esponente e. Tale rappresentazione si indica con il termine rappresentazione in virgola mobile.
In informatica quindi si assegna un numero opportuno di byte per rappresentare i numeri. Valori tipici sono un byte (i numeri sono detti in singola precisione) o due byte (in doppia precisione).
Se, per effetto di operazioni aritmetiche, i valori ottenuti dovessero superare il massimo numero, oppure, viceversa, i numeri dovessero essere troppo piccoli per il minimo numero rappresentabile in base ai byte utilizzati, si verificano errori di calcolo, rispettivamente di overflow e underflow. È compito del programmatore scegliere i tipi numerici opportuni nei programmi per evitare errori di questo tipo.
Il sistema binario in informatica è così importante che è diventata prassi comune sostituire la base dieci con la base due anche nella definizione dei più comuni prefissi di multipli o sottomultipli. Per esempio, il prefisso giga, che nel Sistema di Numerazione Internazionale corrisponde a 109, ovvero un miliardo (per esempio, un gigawatt esprime la potenza di un miliardo di watt), nel sistema binario corrisponderebbe a 10243, ovvero 230. In realtà, nel Sistema Internazionale, il multiplo 230 non si indica con il prefisso G (giga), ma con Gi (per gigabinary). Sfortunatamente i prefissi del sistema binario non sono mai entrati nell’uso comune e oggi spesso si fa riferimento con il termine del sistema SI decimale alle potenze binarie, generando una certa ambiguità. Per esempio, capita di indicare con kbyte il valore di 1024 byte (invece di 1000 byte). Si noti che la forma corretta delle unità di misura adotta sempre la minuscola per il nome esteso, e la maiuscola per l’abbreviazione (tranne per kb: ved. https://it.wikipedia.org/wiki/Gigabyte).
Indice materie – Informatica – La rappresentazione di numeri e simboli – Continua