Conversione tra Basi Numeriche

Concetti Chiave
  • La conversione tra basi numeriche è un processo fondamentale in elettronica e informatica.
  • I numeri possono essere convertiti da decimale a binario e ottale utilizzando metodi di divisione e moltiplicazione.
  • La parte intera e la parte frazionaria di un numero decimale richiedono procedure diverse per la conversione.
  • Per la parte intera, si utilizza la divisione per la base desiderata e si accumulano i resti.
  • Per la parte frazionaria, si utilizza la moltiplicazione per la base desiderata e si accumulano le parti intere.
  • La conversione di numeri con entrambe le parti richiede la combinazione dei risultati delle due conversioni.

Conversione tra Basi Numeriche

Le rappresentazioni di un numero in una radice diversa si dicono equivalenti se hanno la stessa rappresentazione decimale.

Per esempio, (0011)_8 e (1001)_2 sono equivalenti, infatti entrambi hanno valore decimale 9.

La conversione di un numero in base r in decimale si effettua espandendo il numero in una serie di potenze e sommando tutti i termini come mostrato nella lezione precedente.

Ora presentiamo una procedura generale per l'operazione inversa di convertire un numero decimale in un numero in base r. Se il numero include una virgola, è necessario separare il numero in una parte intera e una parte frazionaria, poiché ogni parte deve essere convertita diversamente. La conversione di un intero decimale in un numero in base r si fa dividendo il numero e tutti i quozienti successivi per r e accumulando i resti. Questa procedura è meglio illustrata con un esempio.

Esempio di Conversione di un Intero Decimale

Proviamo a convertire il decimale 41 in binario.

Per prima cosa, bisogna dividere 41 per 2 ottenendo un quoziente intero di 20 e un resto di 1.

Poi il quoziente è nuovamente diviso per 2 per dare un nuovo quoziente e resto. Il processo continua fino a quando il quoziente intero diventa 0. I coefficienti del numero binario desiderato sono ottenuti dai resti accumulati in ordine inverso.

Il processo può essere tabulato come segue:

Operazione Quoziente Intero Resto Coefficiente
41 / 2 20 1 a_0 = 1
20 / 2 10 0 a_1 = 0
10 / 2 5 0 a_2 = 0
5 / 2 2 1 a_3 = 1
2 / 2 1 0 a_4 = 0
1 / 2 0 1 a_5 = 1
Tabella 1: Procedimento per convertire il numero 41 in binario.

Pertanto, la risposta è:

(41)_{10} = (a_5\,a_4\,a_3\,a_2\,a_1\,a_0)_{2} = (101001)_{2}.

Il processo aritmetico può essere manipolato più convenientemente come segue:

\begin{array}{r|rr} \text{Dividendo} & \text{Resto} \\ 41 & \\ 20 & 1 \\ 10 & 0 \\ 5 & 0 \\ 2 & 1 \\ 1 & 0 \\ 0 & 1 & = 101001 \end{array}

La conversione da interi decimali a qualsiasi sistema in base-r è simile a questo esempio, eccetto che la divisione è fatta per r invece che per 2.

Esempio di Conversione in Ottale

Proviamo a convertire il decimale 153 in ottale.

La base richiesta r è 8. Prima, 153 è diviso per 8 per dare un quoziente intero di 19 e un resto di 1. Poi 19 è diviso per 8 per dare un quoziente intero di 2 e un resto di 3. Infine, 2 è diviso per 8 per dare un quoziente di 0 e un resto di 2. Questo processo può essere convenientemente tabulato come segue:

Operazione Quoziente Intero Resto Coefficiente
153 / 8 19 1 a_0 = 1
19 / 8 2 3 a_1 = 3
2 / 8 0 2 a_2 = 2
Tabella 2: Procedimento per convertire il numero 153 in Ottale

Il risultato, quindi, sarà:

(153)_{10} = (231)_{8}

Conversione in Binario di un numero frazionario

La conversione di una frazione decimale in binario si ottiene con un metodo simile a quello usato per gli interi. Tuttavia, si usa la moltiplicazione invece della divisione, e si accumulano gli interi invece dei resti. Ancora, il metodo è meglio spiegato con un esempio.

Vogliamo convertire (0.6875)_{10} in binario. Per prima cosa, 0.6875 è moltiplicato per 2 per dare un intero e una frazione. Poi la nuova frazione è moltiplicata per 2 per dare un nuovo intero e una nuova frazione. Il processo continua fino a quando la frazione diventa 0 o fino a quando il numero di cifre ha sufficiente accuratezza. Infatti, bisogna tener presente che un numero decimale che ha un'espansione decimale finita non è detto che abbia un'espansione binaria finita. Per esempio, (0.1)_{10} in decimale è (0.00011001100110011\ldots)_{2} in binario, che non ha una rappresentazione finita.

Proviamo, quindi, a convertire (0.6875)_{10} in binario:

Operazione Parte Frazionaria Parte Intera Coefficiente
0.6875 \cdot 2 = 1.3750 0.3750 1 a_{-1} = 1
0.3750 \cdot 2 = 0.7500 0.7500 0 a_{-2} = 0
0.7500 \cdot 2 = 1.5000 0.5000 1 a_{-3} = 1
0.5000 \cdot 2 = 1.0000 0.0000 1 a_{-4} = 1
Tabella 3: Procedimento per convertire il numero 0.6875 in binario

Pertanto, la risposta è:

(0.6875)_{10} = (0.\,a_{-1}\, a_{-2}\, a_{-3}\, a_{-4})_{2} = (0.1011)_{2}

Conversione in Ottale di un numero frazionario

Per convertire una frazione decimale in un numero espresso in base r, si usa una procedura simile. Tuttavia, la moltiplicazione è per r invece che per 2, e i coefficienti trovati dagli interi possono variare in valore da 0 a r - 1 invece che da 0 e 1.

Proviamo a convertire (0.513)_{10} in ottale:

Operazione Parte Frazionaria Parte Intera Coefficiente
0.513 \cdot 8 = 4.104 0.104 4 a_{-1} = 4
0.104 \cdot 8 = 0.832 0.832 0 a_{-2} = 0
0.832 \cdot 8 = 6.656 0.656 6 a_{-3} = 6
0.656 \cdot 8 = 5.248 0.248 5 a_{-4} = 5
0.248 \cdot 8 = 1.984 0.984 1 a_{-5} = 1
0.984 \cdot 8 = 7.872 0.872 7 a_{-6} = 7
Tabella 4: Procedimento per convertire il numero 0.513 in ottale

La risposta, a sei cifre significative, è ottenuta dalla parte intera dei prodotti:

(0.513)_{10} = (0.406517...)_{8}

Avremmo potuto continuare il processo fino a quando la parte frazionaria diventa zero (ammesso che ciò accada), ma in questo caso ci siamo fermati dopo sei cifre significative.

Caso Generale

La conversione di numeri decimali con parti sia intere che frazionarie si fa convertendo l'intero e la frazione separatamente e poi combinando le due risposte.

Ad esempio, per convertire (41.6875)_{10} in binario, si converte prima la parte intera 41 e poi la parte frazionaria 0.6875.

Unendo i risultati che abbiamo ottenuto negli esempi di sopra, otteniamo:

(41.6875)_{10} = (101001.1011)_{2}

Analogamente, per convertire (153.513)_{10} in ottale, si converte prima la parte intera 153 e poi la parte frazionaria 0.513:

(153.513)_{10} = (231.406517...)_{8}