La sottrazione per complemento

Il complemento alla base di un numero naturale "x", rappresentato nel sistema di numerazione posizionale in base "β" con "n" cifre, è quel numero naturale "y" tale che:

y = βn - x.

Se "x" è diverso da zero, anche il complemento alla base di "x" è rappresentabile in base "β" con "n" cifre: la rappresentazione in base "β" del complemento alla base di "x" si può ottenere comlpementando a "β - 1" ciascuna cifra della rappresentazione in base  "β" di "x" ed incrementando il risultato di uno.

La differenza tra due numeri "A" e "B" rappresentati in base "β" con "n" cifre si può anche ottenere sommando al minuendo "A" il complemento alla base del sottraendo "B" ed ignorando l'eventuale riporto finale di ordine "n" dell'addizione (il che equivale al resto della divisione intera della somma per "βn").

Supponiamo infatti che:

A < βn, B < βn e A ≥ B.

Allora:

(A + "complemento alla base di B") mod βn =

(A + (βn - B)) mod βn =

(A - B + βn) mod βn =

(A - B) mod βn = A - B.

Questa operazione, chiamata anche sottrazione per complemento, era molto usata per eseguire le sottrazioni nelle calcolatrici meccaniche ed elettromeccaniche di un tempo.


Esempio di sottrazione tra due numeri in base 2:

A = (110)2 = 2 + 4 = 6.

B = (001)2 = 1.

"Complemento a due di B" = (110)2 + 1 = (111)2.

i |3 2 1 0|
ri|1 1 0 0|
ai|  1 1 0|
bi|  1 1 1|
di|  1 0 1|

D = (101)2 = 1 + 4 = 5.


Esempio di sottrazione tra due numeri in base 8:

A = (314)8 = 4 + 1 x 8 + 3 x 64 = 4 + 8 + 192 = 204

B = (125)8 = 5 + 2 x 8 + 1 x 64 = 5 + 16 + 64 = 85.

"Complemento ad otto di B" = (652)8 + 1 = (653)8.

i |3 2 1 0|
ri|1 0 0 0|
ai|  3 1 4|
bi|  6 5 3|
di|  1 6 7|

D = (167)8 = 7 + 6 x 8 + 1 x 64 = 7 + 48 + 64 = 119.


Esempio di sottrazione tra due numeri in base 16:

A = (F1)16 = 1 + 15 x 16 = 1 + 240 = 241.

B = (1F)16 = 15 + 16 = 31.

"Complemento a 16 di B" = (E0)16 + 1 = (E1)16.

i |2 1 0|
ri|1 0 0|
ai|  F 1|
bi|  E 1|
di|  D 2|

D = (D2)16 = 2 + 13 x 16 = 2 + 48 + 160 = 210.