Full-adder
# Full-adder

| $A_n$ | $B_n$ | $C_{n-1}$ | $S_n$ | $C_n$ |
| - | - | - | - | - |
| 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 1 | 0 |
| 0 | 1 | 0 | 1 | 0 |
| 0 | 1 | 1 | 0 | 1 |
| 1 | 0 | 0 | 1 | 0 |
| 1 | 0 | 1 | 0 | 1 |
| 1 | 1 | 0 | 0 | 1 |
| 1 | 1 | 1 | 1 | 1 |

Il full-adder o sommatore completo è un circuito logico caratterizzato da tre ingressi e due uscite. La sua funzionalità è quella di eseguire una somma tra due numeri espressi in formato binario con lunghezza di parola a un bit. È un componente fondamentale dell'elettronica digitale perché, connesso opportunamente con altri full-adder e porte logiche può dare luogo alle unità di elaborazione ALU (Arithmetic Logic Unit) dei processori. I full-adder sono le fondamenta su cui è basata la costruzione di semplici calcolatrici. Il full-adder è costituito dall'insieme di due half-adder e una porta logica OR, opportunamente collegati (Figura a destra).

In logica binaria esegue questa semplice operazione:

A + B + Ci = S + Co

dove A e B sono gli operandi, Ci il riporto (C → carry ) in ingresso della precedente somma e S e Co sono la somma e il riporto di uscita. Ogni variabile è un bit (0 oppure 1)

In ingresso sono inseriti i due bit da sommare e l'eventuale bit di riporto; in uscita vengono forniti la somma ed il riporto. Ad esempio, se diamo in ingresso i valori 1 1 0 (1° numero, 2° numero, riporto), il componente restituirà il valore 0 con riporto 1 (corrispondente al valore 10 in base binaria).

## Full-adder a "n" bit

La struttura col riporto in ingresso esiste per poter eventualmente collegare un numero "n" full-adder in cascata per poter ottenere Full-adder a "n" bit.

Ottimizzazioni come Kogge-Stone utilizzano strategie di predizione del riporto per ridurre la latenza al costo di occupare maggiore area.

