Sistemi di numerazione e conversioni tra basi: esercizi svolti

Indice dei contenuti

    I calcolatori rappresentano ogni dato in binario, ma programmatori e progettisti lavorano anche in esadecimale e ottale. Saper convertire tra basi è il primo strumento dell’informatica di base. Questa scheda allena le conversioni tra decimale, binario, ottale ed esadecimale, parte intera e frazionaria.

    Valore posizionale: in base b, ogni cifra vale per la sua posizione:

    N=\sum_i d_i\,b^i.

    1. Da binario a decimale

    Esercizio. Convertire 1011_2 in decimale.

    Si sommano le potenze di 2 nelle posizioni con cifra 1:

    1011_2=1\cdot2^3+0\cdot2^2+1\cdot2^1+1\cdot2^0=8+0+2+1=11_{10}.

    Ogni posizione vale il doppio della precedente: la conversione è una somma pesata di potenze di 2.

    2. Da decimale a binario

    Esercizio. Convertire 43_{10} in binario con le divisioni successive.

    Si divide ripetutamente per 2, leggendo i resti dal basso:

    43:2=21\ r\,1,\ \ 21:2=10\ r\,1,\ \ 10:2=5\ r\,0,\ \ 5:2=2\ r\,1,\ \ 2:2=1\ r\,0,\ \ 1:2=0\ r\,1.

    Resti dal basso verso l’alto: 101011:

    43_{10}=101011_2.

    Verifica: 32+8+2+1=43. ✓ Il metodo delle divisioni successive vale per qualunque base destinazione.

    3. Da decimale a esadecimale

    Esercizio. Convertire 254_{10} in esadecimale.

    Divisioni successive per 16:

    254:16=15\ r\,14,\qquad 15:16=0\ r\,15.

    Le cifre 14 e 15 in esadecimale sono E e F. Resti dal basso:

    254_{10}=\text{FE}_{16}.

    Verifica: 15\times16+14=240+14=254. ✓ L’esadecimale usa AF per le cifre 1015.

    4. Conversione binario ↔ esadecimale

    Esercizio. Convertire 11010110_2 in esadecimale.

    Si raggruppano i bit a gruppi di 4 (una cifra esadecimale per nibble), da destra:

    \underbrace{1101}_{D}\ \underbrace{0110}_{6}\ \Rightarrow\ \text{D6}_{16}.

    (1101_2=13=D, 0110_2=6.) Il legame binario-esadecimale è diretto perché 16=2^4: ogni 4 bit = 1 cifra esadecimale. È il motivo per cui l’esadecimale è comodo per i programmatori.

    5. Conversione binario ↔ ottale

    Esercizio. Convertire 11010110_2 in ottale.

    Si raggruppano i bit a gruppi di 3 (perché 8=2^3), da destra:

    \underbrace{11}_{3}\ \underbrace{010}_{2}\ \underbrace{110}_{6}\ \Rightarrow\ 326_8.

    (Si completa il gruppo più a sinistra con zeri: 011_2=3.) Verifica: 3\times64+2\times8+6=192+16+6=214, e 11010110_2=214. ✓

    6. Conversione della parte frazionaria

    Esercizio. Convertire 0{,}625_{10} in binario.

    Si moltiplica ripetutamente per 2, leggendo le parti intere dall’alto:

    0{,}625\times2=1{,}25\ (1),\quad 0{,}25\times2=0{,}5\ (0),\quad 0{,}5\times2=1{,}0\ (1).

    Parti intere dall’alto verso il basso:

    0{,}625_{10}=0{,}101_2.

    Verifica: 2^{-1}+2^{-3}=0{,}5+0{,}125=0{,}625. ✓ Per la parte frazionaria si moltiplica (non si divide), e non tutte le frazioni decimali terminano in binario.

    7. Frazione decimale periodica in binario

    Esercizio. Perché 0{,}1_{10} non ha una rappresentazione binaria finita?

    Applichiamo il metodo delle moltiplicazioni successive:

    \begin{aligned} 0{,}1\cdot2&=0{,}2\quad (0),\\ 0{,}2\cdot2&=0{,}4\quad (0),\\ 0{,}4\cdot2&=0{,}8\quad (0),\\ 0{,}8\cdot2&=1{,}6\quad (1),\\ 0{,}6\cdot2&=1{,}2\quad (1), \end{aligned}

    e da 0{,}2 il ciclo riparte. Quindi:

    0{,}1_{10}=0{,}0001100110011\ldots_2.

    Il periodo è inevitabile perché 0{,}1=\dfrac{1}{10}=\dfrac{1}{2\cdot5}: il denominatore contiene il fattore 5, non una sola potenza di 2. In binario terminano solo le frazioni il cui denominatore ridotto è una potenza di due.

    8. Indirizzo esadecimale in binario e decimale

    Esercizio. Convertire l’indirizzo \text{0x3A7} in binario e in decimale.

    Per il binario si espande ogni cifra esadecimale in 4 bit:

    3\to0011,\qquad A\to1010,\qquad 7\to0111.

    Quindi:

    \text{0x3A7}=0011\ 1010\ 0111_2.

    Per il decimale:

    3\cdot16^2+10\cdot16+7=3\cdot256+160+7=935.

    Gli indirizzi di memoria si scrivono spesso in esadecimale proprio perché il passaggio ai bit è immediato: ogni cifra corrisponde esattamente a un nibble.

    9. Numero minimo di bit

    Esercizio. Quanti bit servono per rappresentare tutti i valori interi da 0 a 999 senza segno?

    Con n bit senza segno si rappresentano 2^n valori, da 0 a 2^n-1. Serve:

    2^n\ge1000.

    Poiché 2^9=512 e 2^{10}=1024, servono 10 bit. Con 9 bit il massimo sarebbe 511, insufficiente; con 10 bit il massimo è 1023, quindi l’intervallo contiene tutti i valori richiesti.

    Errori comuni

    • Leggere i resti nell’ordine sbagliato. Nelle divisioni successive i resti vanno letti dal basso (ultimo resto = bit più significativo).
    • Sbagliare il raggruppamento dei bit. Per l’esadecimale si raggruppa a 4 bit, per l’ottale a 3, partendo da destra.
    • Dividere la parte frazionaria. La parte intera si divide, la frazionaria si moltiplica per la base.
    • Pretendere rappresentazioni finite per ogni decimale. In binario molte frazioni decimali diventano periodiche: non è un errore di calcolo, è una proprietà della base.
    • Dimenticare le cifre A–F. In esadecimale le cifre 1015 sono AF: usare 10,11\dots è errore di notazione.

    Ultimo aggiornamento: