Fondamenti di informatica 1/Sistemi di numerazione
I sistemi di numerazione sono l'insieme delle regole per rappresentare i numeri, sia interi che fratti.
Il sistema più utilizzato è quello posizionale, ovvero un sistema con il quale le cifre più a sinistra sono quelle più significative.
Sistema numerico decimale
modificaSenza dubbio quello più diffuso è il sistema numerico decimale, un sistema posizionale che utilizza dieci simboli numerici. Per esempio, il numero decimale 234 si può rappresentare anche in questo modo: 200+30+4. Oppure in questo modo: 2*102+3*101+4*100.È moltiplicato per una potenza di dieci proprio per il fatto che dieci è la base. Oppure, per quanto riguarda i numeri con una parte frazionaria (quelli con la virgola) si procede in questo modo, il numero 234,483 può essere rappresentato in questo modo: 2*102+3*101+4*100+4*10-1+8*10-2+3*10-3
Sistema numerico binario
modificaOvviamente il sistema decimale non è l'unico modo per rappresentare i numeri. Un sistema molto usato, soprattutto nei computer, è il sistema binario, o a base 2. È molto semplice: utilizza solamente 2 cifre, lo 0 e l'1. Queste due cifre sono chiamate bit. L'algebra di Boole(che tratteremo più avanti) si basa su questo sistema, per la proprieta di avere soltanto due valori, che possono significare "falso"(0) o "vero"(1), oppure "spento"(0) o "acceso"(1), o ancora, utilizzato negli apparecchi elettronici, "passa corrente"(1) o "non passa corrente"(0).
Avendo soltanto due valori, il numero di cifre necessario a rappresentare un numero è evidentemente maggiore rispetto al sistema decimale.
Il numero di valori rappresentabili con n bit è : . Ad esempio:
Per n=2 avremo: 00 = 0 01 = 1 10 = 2 11 = 3
Per convertire un numero decimale in uno binario esistono diversi metodi. Il più semplice è quello della divisione per 2 nell'insieme dei numeri interi, invertendo poi le cifre del risultato.
Dunque, prendiamo ad esame il numero 137. Iniziamo dividendolo per 2, otteniamo 68 con il resto di 1. Scriviamo 1 (il resto) nella prima cifra del numero da invertire e proseguiamo dividendo il risultato ed affiancando (a destra) ogni volta il resto, sia esso uguale a 1 o a 0, al numero da invertire, fintanto che non otterremo come risultato 1, quindi 1:2 = 0. Infine invertiamo l'ordine delle cifre del nostro "numero da invertire"
In breve e più chiaramente:
Dato il numero decimale 137 lo dividiamo per il numero 2, nell'insieme dei numeri interi, tenendo conto del suo resto (sempre uguale a 0 o ad 1), finché non raggiungiamo 1:2 = 0. Poi affianchiamo i resti e quindi ne invertiamo l'ordine.
- 137:2 = 68 con resto 1
- 68:2 = 34 con resto 0
- 34:2 = 17 con resto 0
- 17:2 = 8 con resto 1
- 8:2 = 4 con resto 0
- 4:2 = 2 con resto 0
- 2:2 = 1 con resto 0
- 1:2 = 0 con resto 1
- resti affiancati: 10010001
- resti affiancati invertiti (risultato in binario) : 10001001 = 137
Conversione dal sistema binario al sistema decimale
modificaPer convertire un numero binario in decimale, segui questi passaggi:
1. **Inizia dalla cifra più a destra** del numero binario. 2. **Moltiplica questa cifra per 2 elevato alla potenza di 0** (cioè 2^0 = 1) e ottieni il risultato parziale. 3. Procedi verso sinistra e **moltiplica ogni cifra successiva per la potenza di 2 corrispondente alla sua posizione**.
Ecco un esempio:
Consideriamo il numero binario **111001**: - La cifra più a destra è **1**. Moltiplicata per 2^0, otteniamo **1**. - La seconda cifra da destra è **0**. Moltiplicata per 2^1, otteniamo **0**. - La terza cifra da destra è **0**. Moltiplicata per 2^2, otteniamo **0**. - La quarta cifra da destra è **1**. Moltiplicata per 2^3, otteniamo **8**. - La quinta cifra da destra è **1**. Moltiplicata per 2^4, otteniamo **16**. - La cifra più a sinistra è **1**. Moltiplicata per 2^5, otteniamo **32**.
Sommando tutti questi risultati parziali, otteniamo il valore decimale di **111001**, che è **57**¹.
Sistema ottale ed esadecimale
modificaAltri sistemi numerici altrettanto importanti sono il sistema ottale che utilizza tutte le cifre fino al numero 8; o il sistema esadecimale, che utilizza le 10 cifre ed altri sei simboli, ossia le lettere che vanno dalla A alla F. Sono state scelte proprio queste basi come rappresentazione numerica proprio per sfruttare il fatto che 8 e 16 sono potenze di 2.
Valore decimale | Valore esadecimale | Valore ottale | Valore binario |
0 | 0 | 0 | 0000 |
1 | 1 | 1 | 0001 |
2 | 2 | 2 | 0010 |
3 | 3 | 3 | 0011 |
4 | 4 | 4 | 0100 |
5 | 5 | 5 | 0101 |
6 | 6 | 6 | 0110 |
7 | 7 | 7 | 0111 |
8 | 8 | 10 | 1000 |
9 | 9 | 11 | 1001 |
10 | A | 12 | 1010 |
11 | B | 13 | 1011 |
12 | C | 14 | 1100 |
13 | D | 15 | 1101 |
14 | E | 16 | 1110 |
15 | F | 17 | 1111 |
Conversione tra binario, ottale ed esadecimale
modificaPer convertire da binario ad ottale, si raggruppano le cifre a gruppi di 3 (perché 8 = 23), quindi si convertono i singoli gruppi in ottale. Esempio:
binario | binario raggruppato | ottale raggruppato | ottale |
---|---|---|---|
10000000101 | 10|000|000|101 | 2|0|0|5 | 2005 |
Per convertire da binario ad esadecimale, si procede in modo analogo, raggruppando le cifre per 4 (perché 16 = 24):
binario | binario raggruppato | esad. raggruppato | esadecimale |
---|---|---|---|
10000000101 | 100|0000|0101 | 4|0|5 | 405 |
Per convertire da ottale/esadecimale in binario, si procede al contrario, espandendo ciascuna cifra. Per esempio:
ottale | ottale raggruppato | binario raggruppato | binario |
---|---|---|---|
7421246 | 7|4|2|1|2|4|6 | 111|100|010|001|010|100|110 | 111100010001010100110 |
esadecimale | esad. raggruppato | binario raggruppato | binario |
---|---|---|---|
1E22A6 | 1|E|2|2|A|6 | 0001|1110|0010|0010|1010|0110 | 000111100010001010100110 |
Per convertire da ottale ad esadecimale e viceversa, si passa per una conversione intermedia in binario. Per esempio:
ottale | ottale raggruppato | binario raggruppato per 3 | binario |
---|---|---|---|
7421246 | 7|4|2|1|2|4|6 | 111|100|010|001|010|100|110 | 111100010001010100110 |
binario | binario raggruppato per 4 | esad. raggruppato | esadecimale |
---|---|---|---|
000111100010001010100110 | 0001|1110|0010|0010|1010|0110 | 1|E|2|2|A|6 | 1E22A6 |