Fondamenti di informatica 1/Sistemi di numerazione

Wikibooks, manuali e libri di testo liberi.
Indice del libro


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[modifica]

Senza 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[modifica]

Ovviamente 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[modifica]

Per 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[modifica]

Altri 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[modifica]

Per 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