# Fondamenti di informatica 1/Sistemi di numerazione

Fondamenti di informatica 1
Copertina Tutti i moduli · Sviluppo
* Introduzione
* Dati e informazioniFondamenti di informatica 1/Dati e informazioni
* Sistemi di numerazioneFondamenti di informatica 1/Sistemi di numerazione
* Metodi di rappresentazione dei numeri binariFondamenti di informatica 1/Metodi di rappresentazione dei numeri binari
* L'algebra di BooleFondamenti di informatica 1/L'algebra di Boole
* Le porte logicheFondamenti di informatica 1/Le porte logiche
* Le funzioni
* Gli algoritmi e i diagrammi di flusso
* Traduttori e compilatori
Modifica il sommario
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

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*10$^2$+3*10$^1$+4*10$^0$.È 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*10$^2$+3*10$^1$+4*10$^0$+4*10$^{-1}$+8*10$^{-2}$+3*10$^{-3}$

## Sistema numerico binario

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 è : $2^{n}$. Ad esempio:
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

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

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

Per convertire da binario ad ottale, si raggruppano le cifre a gruppi di 3 (perché 8 = 2$^3$), 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 = 2$^4$):
| 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 |