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):
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):
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:
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:
Verifica:
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 è:
Su 4 bit si conservano solo i 4 bit meno significativi:
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:
In binario 13=1101_2:
Somma:
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.