Un sommatore parallelo è composto da un certo numero di Full-Adder, ad esempio per un sommatore a 4 bit:
Ogni Full-Adder è composto da 2 Half-Adder:
Vogliamo simulare la struttura e il funzionamento di un sommatore parallelo a 8 bit, per questo dovrai creare le classi seguenti:
HalfAdderSimula il comportamento di un semi-sommatore, esegue la somma binaria dei 2 bit in ingresso (A e B) e produce in uscita la somma (S) e il riporto (C):
| A | B | S | C | 
|---|---|---|---|
| 0 | 0 | 0 | 0 | 
| 0 | 1 | 1 | 0 | 
| 1 | 0 | 1 | 0 | 
| 1 | 1 | 0 | 1 | 
La classe possiede il costruttore vuoto e i metodi:
public boolean getSum(boolean a, boolean b)public boolean getCarry(boolean a, boolean b)FullAdderSimula il comportamento di un sommatore completo, è composto da 2 HalfAdder ed esegue la somma binaria dei 2 bit in ingresso (An e Bn) e del bit di riporto della colonna precedente (Cn-1)e produce in uscita la somma (Sn) e il riporto (Cn):
| An | Bn | Cn-1 | Sn | Cn | 
|---|---|---|---|---|
| 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 | 
La classe possiede il costruttore vuoto e i metodi:
public boolean getSum(boolean a, boolean b, boolean carryIn)public boolean getCarry(boolean a, boolean b, boolean carryIn)CalculatorÈ un calcolatore binario a 8 bit composto da 8 FullAdder e implementa, oltre al costruttore vuoto, i metodi utili per sommare e sottrarre due numeri da 8 bit:
public byte add(byte a, byte b)public byte sub(byte a, byte b)HalfAdder, FullAdder e Calculator