Dopo aver visto, nel paragrafo precedente, com'è definito il sistema binario, vediamo ora come si svolgono le operazioni aritmetiche con i numeri binari. Si possono infatti tranquillamente eseguire addizione, sottrazione, moltiplicazione e divisione nel sistema binario. Prendiamole in esame una per volta. \( Wink \)
Prima di procedere oltre è necessario avere ben chiaro cos'è il sistema binario e, in caso di dubbi, ti basta un click sul link precedente.
Per eseguire la somma tra due o più numeri binari la prima cosa da fare è incolonnarli: per farlo nel modo giusto basta posizionarli uno sotto l'altro partendo dalla prima cifra a destra e facendole corrispondere. Per intenderci:

Una volta incolonnati nel modo giusto si esegue la somma dei due numeri binari ricordando che:
\( \begin{array}{c c c c l} 0&+&0&=&0\\ 1&+&0&=&1 \\ 0&+&1&=&1 \\ 1&+&1&=&0 \ \ \mbox{con riporto di 1 alla colonna immediatamente a sinistra} \end{array} \)
Consideriamo la seguente somma secondo il procedimento appena visto
\( \bullet \ (10100)_2 + (111)_2 \ = \ \mbox{?} \)
\( \begin{array}{ccccccc} & {\color{red}1} & & & &\mbox{riporti}\\ 1 & 0 & 1 & 0 & 0 & + \\ & & 1 & 1 & 1 & = \\ \hline 1 & 1 & 0 & 1 & 1\end{array} \)
e abbiamo il risultato: \( (10100)_2 + (111)_2 = (11011)_2 \).
Vediamo un altro esempio. Vogliamo calcolare la somma in base 2
\( \bullet \ (1111)_2 + (1010)_2 + (101)_2\ = \ \mbox{?} \)
\( \begin{array}{ccccccc} 1 & 1 & 1 & 1 & &\mbox{riporti}\\ & 1 & 1 & 1 & 1 & + \\ & 1 & 0 & 1 & 0 & + \\ & & 1 & 0 & 1 & = \\ \hline 1 & 1 & 1 & 1 & 0 & \end{array} \)
quindi il risultato è \( (1111)_2 + (1010)_2 + (101)_2\ = \ (11110)_2 \)
La somma tra numeri binari gode anch'essa della proprietà commutativa e della proprietà associativa.
Per eseguire correttamente la differenza tra due numeri binari bisogna innanzitutto incolonnarli così come visto nell'addizione e poi ricordare che:
\( \begin{array}{c c c c c l} 0&-&0&=&0\\ 1&-&0&=&1 \\ 1&-&1&=&0 \\ 0&-&1&=&1& \mbox{dopo essersi prestato 1 dalla colonna a sinistra} \end{array} \)
Attenzione! Quando facciamo un prestito da una colonna ad un'altra, l'unità aumenta il suo valore di uno, cioè è come se ricevessimo in prestito due 1. Sembra difficile da capire ma non è così. Pensate alla sottrazione tra numeri naturali, ad esempio \( 153-45 \). Non potendo eseguire la differenza tra le cifre delle unità, ci presteremo 1 decina, che non equivale ad una bensì a dieci unità.. Insomma: spostandoci di colonna aumenta il valore delle cifre; altra giustifica del fatto che il sistema binario è posizionale. \( Wink \)
\( \bullet \ (11110)_2 - (1010)_2 \ = \ \mbox{?} \)
\( \begin{array}{ccccccc} 1 & 1 & 1 & 1 & 0 & - \\ & 1 & 0 & 1 & 0 & = \\ \hline 1 & 0 & 1 & 0 & 0\end{array} \)
Quindi \( (11110)_2 - (1010)_2 \ = \ (10100)_2 \)
\( \bullet \ (10010)_2 - (1101)_2 \ = \ \mbox{?} \)
\( \begin{array}{ccccccc} \\ 1 & 0 & 0 & 1 & 0 & - \\ & 1 & 1 & 0 & 1 & = \\ \hline 0 & 0 & 1 & 0 & 1\end{array} \)
Pertanto \( (10010)_2 - (1101)_2 \ = \ (101)_2 \)
Per eseguira la moltiplicazione tra due numeri binari bisogna innanzitutto tener presente che:
\( \begin{array}{c c c c l} 0&\times &1&=&0\\ 1& \times &0&=&0 \\ 0&\times&0&=&0 \\ 1&\times&1&=&1 \end{array} \)
e poi procedere come visto per il prodotto tra numeri naturali, ovvero:
- si incolonnano i due termini e si traccia una linea;
- si moltiplica ciascuna cifra del secondo fattore per il primo fattore;
- si scrive il risultato del primo prodotto e si cambia di volta in volta riga per riportare gli altri ricordando di lasciare un posto vuoto sotto la prima cifra a destra di ciascun risultato;
- si sommano i vari risultati ottenuti.
\( \bullet \ (110)_2 \times (10)_2 \ = \ \mbox{?} \)
\( \begin{array}{c c c c c c} & 1 & 1 & 0 & \times & \\ & & 1 & 0 & = & \\ \hline & 0 & 0 & 0 & + & \to 110 \times 0\\ 1 & 1 & 0 & & = & \to 110 \times 1 \\ \hline 1 & 1 & 0 & 0 & \end{array} \)
Quindi \( (110)_2 \times (10)_2 \ = \ 1100 \)
\( \bullet \ (101)_2 \times (110)_2 \ = \ \mbox{?} \)
\( \begin{array}{c c c c c c c} & & 1 & 0 & 1 & \times & \\ & & 1 & 1 & 0 & = & \\ \hline & & 0 & 0 & 0 & + & \to 101 \times 0\\ & 1 & 0 & 1 & & + & \to 101 \times 1 \\ 1 & 0 & 1 & & & = & \to 101 \times 1 \\ \hline 1 & 1 & 1 & 1 & 0 & \end{array} \)
Ovvero \( (101)_2 \times (110)_2 \ = \ (11110)_2 \)
La divisione tra numeri binari è senza dubbio la più difficile tra le 4 operazioni aritmetiche e si entra spesso in confusione perché siamo abituati a pensare utilizzando il sistema di numerazione decimale. Per ovviare a questo inconveniente vediamo un esempio proponendoci di calcolare la divisione tra (10010)2 e (10)2.
Scriveremo una serie di passaggi che, se seguiti passo passo, non lasceranno spazio ad errori.
\( \begin{array}{c c c c c | c c} 1 & 0 & 0 & 1 & 0 & 1 & 0 \\ \hline &&&&& \\ &&&&& \end{array} \)
\( \begin{array}{c c c c c | c c} 1 & 0 & 0 & 1 & 0 & 1 & 0 \\ \hline &&&&& \\ &&&&& \end{array} \)
\( \begin{array}{c c c c c | c c} 1 & 0 & 0 & 1 & 0 & 1 & 0 \\ \hline &&&&&1 \\ &&&&& \end{array} \)
\( \begin{array}{c c c c c | c c} 1 & 0 & 0 & 1 & 0 & 1 & 0 \\ \hline 1&0&&&&1 \\ &&&&& \end{array} \)
\( \begin{array}{c c c c c | c c} 1 & 0 & 0 & 1 & 0 & 1 & 0 \\ \hline 1&0&&&&1 \\ \hline =&=&&&& \end{array} \)
\( \begin{array}{c c c c c | c c} 1 & 0 & 0 & 1 & 0 & 1 & 0 \\ \hline 1&0&&&&1 \\ \hline =&=&0&&& \end{array} \)
\( \begin{array}{c c c c c | c c} 1 & 0 & 0 & 1 & 0 & 1 & 0 \\ \hline 1&0&&&&1&0 \\ \hline =&=&0&&& \end{array} \)
\( \begin{array}{c c c c c | c c} 1 & 0 & 0 & 1 & 0 & 1 & 0 \\ \hline 1&0&&&&1&0 \\ \hline =&=&0&&& \\ & & 0 & & &\end{array} \)
\( \begin{array}{c c c c c | c c c c} 1 & 0 & 0 & 1 & 0 & 1 & 0 \\ \hline 1&0&&&&1&0&0&1 \\ \hline =&=&0&&& \\ & & 0 & & & \\ \hline & & = & 1 & \\ & & & 0 & \\ \hline & & & 1 & 0 & \\ & & & 1 & 0 & \\ \hline & & & = & = \end{array} \)
Possiamo quindi concludere che \( (10010)_2 : (10)_2 = (1001)_2 \ \mbox{resto} \ 0 \)
\( \bullet \ (10001)_2 : (11)_2 = (101)_2 \ \mbox{resto} \ 10 \), infatti, procedendo come appena visto:
\( \begin{array}{c c c c c | c c c} 1 & 0 & 0 & 0 & 1 & 1 & 1 \\ \hline &1&1&{\color{red}\downarrow}& {\color{blue}\downarrow}&1&0&1 \\ \hline =&=&1&0&{\color{blue}\downarrow}& \\ & & 0 & 0 & {\color{blue}\downarrow}& \\ \hline & & 1 & 0 & 1 \\ & & & 1 & 1 \\ \hline & & & 1 & 0 & \end{array} \)
dove abbiamo considerato dapprima (100)2 essendo (10)2 < (11)2 \( Wink \)