Sei sulla pagina 1di 2

Come trasformare una sottrazione in addizione

Definiamo il complemento a b di un numero N come bn – N


essendo n il numero delle cifre di N.

Esempio: il compl10 di 9 = 101 – 9 = 1


il compl10 di 53 = 102 – 53 = 47

Immaginiamo di dover fare la differenza tra due numeri, A – B,


essendo A il minuendo (da diminuire) e B il sottraendo (da
sottrarre): invece di sottrarre ad A il valore B, sommo ad A il
compl10 di B e quindi si elimina la cifra più significativa.

Esempio:
7- 7+
3= 7= essendo 7 il compl10 di 3
4 1 4

8 0- 8 0+
5 2= 4 8= essendo 48 il compl10 di 52
2 8 1 2 8

Per i numeri binari occorre definire il complemento a 1 e il


complemento a 2:
- per ottenere il compl1 di un numero binario basta
complementare tutti i bit (gli 0 diventano 1, e gli 1
diventano 0);
- per ottenere il compl2 di un numero binario si trova il suo
compl1 e quindi gli somma il valore 1, oppure partendo
dall’LSB (bit meno significativo, è quello più a sinistra)si
lasciano inalterati tutti i bit uguali a zero e il primo bit
che si incontra uguale a 1, quindi si complimentano tutti gli
altri.

Esempi:
num binario Compl1 Compl2
1100 0011 0100
1001 0110 0111

Anche per i numeri binari una sottrazione si può trasformare


in un’addizione, basta sommare al valore del minuendo il compl2 del
sottraendo. È la stessa regola dei numeri decimali visto che in un
caso si usano le potenze del numero 10 e nell’altro quelle del
numero 2.

1 2- 1 2+ 1 1 0 0 - 1 1 0 0 +
9= 1= 1 0 0 1 = 0 1 1 1 =
3 1 3 0 0 1 1 1 0 0 1 1
Il fatto che ci sia un riporto (carry), ossia la cifra che poi
dobbiamo eliminare, sta a significare che il risultato è positivo.
Se il risultato è negativo (minuendo inferiore al sottraendo)
non si ha il carry e per ottenere il risultato finale si
complementa nuovamente alla base.

9- 9+ 1 0 0 1 - 1 0 0 1 +
1 2= 8 8= 1 1 0 0 = 0 1 0 0 =
- 3 9 7 - 0 0 1 1 1 1 0 1
- 3 - 0 0 1 1

Non c’è carry visto che 88 ha due cifre non c’è carry per cui il risultato è
come 97, per cui il risultato è negativo e negativo e va quindi complementato a 2
va quindi complementato a 10

Al posto del compl2 si può utilizzare il compl1. in questo


caso il risultato della sottrazione tra A e B si ottiene sommando
ad A il compl1 di B più il carry della cifra MSB (bit più
significativo). Tale metodo è detto end around carry. Se tale
riporto è 1 il risultato è corretto, se è 0 è necessario un
ulteriore compl1 giacché il risultato è negativo.
Vediamo di capirlo con un esempio:

1 2- 1 1 0 0 - 1 1 0 0 +
9= 1 0 0 1 = 0 1 1 0 =

3 0 0 1 1 1 0 0 1 0 +

1 = End around arry

1 1

9- 1 0 0 1 - 1 0 0 1 +
1 2= 1 1 0 1 = 0 0 1 1 =

-3 - 0 0 1 1 1 1 0 0 non c’è carry,


complemento di nuovo e
- 0 0 1 1 il risultato è negativo

Potrebbero piacerti anche