i calcolatori lavorano così:
a - b = a + (-b)
per cui a - b non è altro che a + inverso di b in complemento a 2.
Una volta complementato b la somma puoi farla bit per bit usando le seguenti espressioni booleane.
INGRESSO
A = bit in input
B = bit in input
C = resto dell'operazione precedente
USCITA
Out ::= A ^ B ^ C
Resto ::= A & B | A & C | B & C
se alla fine del processo Resto è diverso da zero significa che hai avuto un overflow
il complemento a due puoi ottenerlo applicando bit a bit la funzione NOT al secondo operando della sottrazione e poi sommando la costante 1 al risultato.
Quindi, riepilogo ad alto livello algoritmo per a - b:
applica not bit a bit su b
esegui la somma bit a bit di b + 1
esegui la somma bit a bit di a + b
Infine ti segnalo che per eseguire operazioni più rapidamente usando l'hardware conviene convertire i due numeri in int e usare poi il classico operatore -

Rispondi quotando