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:
HalfAdder
Simula 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)
FullAdder
Simula 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