title: Full-adder
text: # 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.
  
  