Aritmetica binaria: esercizi svolti

Indice dei contenuti

    L’aritmetica binaria è ciò che la CPU esegue fisicamente: somme, sottrazioni e scorrimenti su sequenze di bit. Le regole sono quelle decimali, ma con sole due cifre. Questa scheda allena le operazioni di base e gli scorrimenti, che sostituiscono moltiplicazioni e divisioni per potenze di due.

    1. Somma binaria con riporto

    Esercizio. Calcolare 1011_2+0110_2.

    Si somma colonna per colonna con riporto (1+1=10, cioè 0 con riporto 1):

    \begin{array}{r} 1011\\ +\ 0110\\\hline 10001 \end{array}

    Dettaglio: 1+0=1; 1+1=0 riporto 1; 0+1+1=0 riporto 1; 1+0+1=0 riporto 1; riporto finale 1. Risultato 10001_2=17. Verifica: 11+6=17. ✓

    2. Sottrazione binaria con prestito

    Esercizio. Calcolare 1010_2-0011_2.

    Si sottrae con prestito (0-1 richiede un prestito dalla cifra successiva):

    \begin{array}{r} 1010\\ -\ 0011\\\hline 0111 \end{array}

    Risultato 0111_2=7. Verifica: 10-3=7. ✓ Il prestito in binario “vale 2”, come in decimale vale 10.

    3. Moltiplicazione binaria

    Esercizio. Calcolare 101_2\times11_2.

    Come la moltiplicazione decimale, con prodotti parziali shiftati:

    \begin{array}{r} 101\\ \times\ 11\\\hline 101\\ 101\ \ \\\hline 1111 \end{array}

    Risultato 1111_2=15. Verifica: 5\times3=15. ✓ In binario ogni prodotto parziale è 0 oppure una copia shiftata del moltiplicando (le cifre sono solo 0 o 1).

    4. Divisione binaria

    Esercizio. Calcolare 1100_2:10_2.

    Divisione lunga in binario (1100=12, 10=2):

    1100_2:10_2=110_2.

    Verifica: 12:2=6=110_2. ✓ La divisione binaria segue lo stesso schema decimale, confrontando il divisore con i bit del dividendo.

    5. Scorrimento a sinistra (moltiplicazione per 2)

    Esercizio. Applicare uno shift a sinistra a 0011_2 e interpretarlo.

    Lo scorrimento a sinistra aggiunge uno zero a destra:

    0011_2\ll1=0110_2.

    0011_2=3, 0110_2=6: lo shift a sinistra di 1 posizione moltiplica per 2. Uno shift di n posizioni moltiplica per 2^n. È l’operazione più veloce della CPU per moltiplicare per potenze di 2.

    6. Scorrimento a destra (divisione per 2)

    Esercizio. Applicare uno shift a destra a 1100_2 e interpretarlo.

    Lo scorrimento a destra elimina il bit meno significativo:

    1100_2\gg1=0110_2.

    1100_2=12, 0110_2=6: lo shift a destra divide per 2 (divisione intera). Uno shift di n divide per 2^n, scartando il resto. Insieme allo shift a sinistra, è la base dell’aritmetica veloce.

    7. Divisione con resto

    Esercizio. Calcolare 1101_2:10_2 indicando quoziente e resto.

    In decimale 1101_2=13 e 10_2=2, quindi ci aspettiamo quoziente 6 e resto 1. In binario:

    1101_2:10_2=110_2\ \text{con resto}\ 1_2.

    Verifica:

    10_2\cdot110_2+1_2=2\cdot6+1=13=1101_2.

    La divisione intera è l’operazione realmente usata nelle CPU quando si lavora con interi: il quoziente perde la parte frazionaria e il resto va gestito separatamente.

    8. Somma a larghezza fissata

    Esercizio. Su 4 bit senza segno, calcolare 1111_2+0001_2.

    La somma aritmetica completa è:

    \begin{array}{r} 1111\\ +\ 0001\\\hline 1\ 0000 \end{array}

    Su 4 bit si conservano solo i 4 bit meno significativi:

    1111_2+0001_2=0000_2\quad\text{con riporto uscente }1.

    Interpretazione: 15+1=16, ma su 4 bit senza segno l’intervallo è [0,15]; il risultato va in overflow e gira a 0. La larghezza della parola non è un dettaglio grafico: determina quale parte del risultato fisico viene conservata.

    9. Moltiplicazione per costante con shift e somma

    Esercizio. Calcolare 13\times10 usando solo shift e somme binarie.

    Poiché 10=8+2=2^3+2^1, si può scrivere:

    13\times10=(13\ll3)+(13\ll1).

    In binario 13=1101_2:

    1101_2\ll3=1101000_2=104,\qquad 1101_2\ll1=11010_2=26.

    Somma:

    104+26=130,\qquad 130_{10}=10000010_2.

    Molti compilatori trasformano moltiplicazioni per costanti in combinazioni di shift, addizioni e sottrazioni quando conviene. Il metodo funziona perché ogni costante intera è somma di potenze di due.

    Errori comuni

    • Dimenticare il riporto/prestito. In binario 1+1=10 (riporto) e 0-1 richiede prestito: trascurarli sbaglia il risultato.
    • Ignorare la larghezza della parola. Su n bit il risultato conserva solo n bit: il riporto uscente può cambiare completamente l’interpretazione.
    • Confondere shift a sinistra e a destra. Sinistra ×2, destra ÷2: invertirli moltiplica invece di dividere.
    • Ignorare il bit perso nello shift a destra. Lo shift a destra è una divisione intera: il bit scartato è il resto, perso.
    • Trattare i prodotti parziali come in decimale. In binario ogni prodotto parziale è 0 o una copia shiftata: non ci sono moltiplicazioni cifra-cifra complesse.

    Ultimo aggiornamento: