Il primo circuito combinatorio che studiamo è l'half adder (tradotto: mezzo sommatore o semisommatore) nel senso che esso opera una somma ad un singolo bit, senza la gestione del riporto precedente. Di seguito è mostrato lo schema a blocchi del semisommatore:

Come vedete, abbiamo due ingressi, \( A\) e \( B\) che rappresentano i due bit di ingresso (gli addendi della somma), in uscita abbiamo \( S\) che rappresenta il bit di somma, e \(C\) che rappresenta il riporto. Notate nel circuito non c'è un bit di un eventuale riporto precedente, rispetto al circuito full adder che comprende anche il caso di un riporto in input

Sintesi

Per realizzare il circuito concretamente, partiamo dalla tavola di verità che rispecchia il comportamento delle uscite in base ai valori che si presentano agli ingressi: Ad esempio la prima riga significa: che \( 0+0 = 0\) con riporto di \( 0\) ecc. $$ \begin{array}{rr|rr} A & B & S & C \\ \hline 0 & 0 & 0 & 0\\ 0 & 1 & 1 & 0 \\ 1 & 0 & 1 & 0 \\ 1 & 1 & 0 & 1 \end{array} $$ Se guardiamo alla colonna \( S\) (la somma), notiamo che si tratta di una porta \(S = XOR(A, B)\), mentre la colonna \( C\) è una semplice \( AND(A, B)\); possiamo allora, con molta semplicità disegnare il circuito con le porte logiche elementari:

Mettendo insieme una sequenza di semisommatori, si puo realizzare un sommatore in grado si sommare \( n\) bit, quindi un qualunque numero binario. C'è solo un problema! Il riporto, infatti ogni semisommatore non è in grado di sommare un riporto ma bensì solo di presentarlo in uscita sulla base di una somma semplice a due bit. Per risolvere il problema dei riporti, dobbiamo introdurre il sommatore completo full-adder il quale aggiunge un ulteriore input, oltre ad \( A\) e \( B\) per prendere il riporto \( C_0\).

$$ \diamond $$