Sottrazione per complemento
# Sottrazione per complemento

La sottrazione per complemento era il metodo utilizzato per eseguire la sottrazione e la divisione con le addizionatrici meccaniche più semplici.

Tali macchine mancavano di un apposito meccanismo di sottrazione. Per eseguire l'operazione $(a-b)$, l'operatore sommava ad $a$ la quantità $(10^{n}-b)$, il cosiddetto complemento di $b$ a $10^{n}$, dove $n$ è il numero massimo di cifre rappresentabili sull'addizionatrice.

In pratica, la sottrazione per complemento si effettua sommando al minuendo un addendo formato dal complemento a 10 della cifra significativa (non nulla) di ordine più basso del sottraendo e il complemento a 9 di tutte le cifre (del sottraendo) alla sua sinistra.

Per semplificare il lavoro degli operatori, sui tasti delle antiche addizionatrici veniva indicato più in grande il loro valore per la somma e, più in piccolo, il complemento a 9. Alcune addizionatrici avevano anche un dispositivo che evitava di dover sommare i 9 iniziali.

L'utilizzo del complemento per effettuare le sottrazioni non è ovviamente limitato ai numeri rappresentati in base decimale e veniva applicato anche ad addizionatrici prodotte per operare con valute o unità di misura non decimali. Nella programmazione degli attuali calcolatori elettronici viene ampiamente usato il complemento a due con finalità simili.

## Sottrazione

Per capire il funzionamento di questo metodo di calcolo, si pensi di operare con un'addizionatrice in grado di eseguire solo somme (ad es. Comptometer) e in grado di lavorare con solo 5 cifre. Inserire un numero che termina con più di 5 zeri (nell'esempio 100.000) equivale a non inserire nulla, in quanto sulla addizionatrice entrerebbero solo gli zeri finali. Nella terminologia introdotta successivamente dall'Informatica si verifica un overflow, senza particolari conseguenze negative, tranne la perdita delle cifre significative.

Tale caratteristica può essere però sfruttata per sottrarre. Infatti su un'addizionatrice con 5 cifre,

    $a-b=a+(0-b)=a+(100000-b)$

in quanto nell'aritmetica dell'addizionatrice $100000=0$. Ciò permette di sommare $100000-b$ (complemento di $b$ a $100000$) invece di sottrarre $b$, operazione che la macchina non è in grado di compiere. Ad esempio,

    $77-17=77+(100000-17)=77+99983=100060=60$
    $789-160=789+(100000-160)=789+99840=100629=629$

in quanto la cifra $1$ iniziale dei risultati non può apparire sul totalizzatore, il dispositivo su cui viene rappresentato il risultato, che ha solo 5 cifre.

## Divisione

La divisione sulle calcolatrici meccaniche avveniva per sottrazioni successive. Nelle macchine più complesse l'operazione era quasi completamente automatizzata. Su quelle in cui perfino la sottrazione non era "diretta", ma per complemento, si doveva ricorrere a degli accorgimenti semplici, ma non banali, per rendere "semi-automatico" il lavoro dell'operatore.

Ad esempio, l'operazione

    $255:12=21$ con il resto di $3$

si sarebbe svolta nel seguente modo:

| Risultato sullo schermo | Operazione |
| - | - |
| _$255$ | Si imposta 255 lasciando almeno una colonna libera alla sua sinistra |
| $0,255$ | Si pone il cursore che indica la virgola nella posizione davanti alla prima cifra del dividendo |
| $0,88$ | Si sottrae ripetutamente 12. Ossia si somma $88=100-12$ (complemento a 100 di 12). |
| $1,135$ | Sul totalizzatore il numero davanti alla virgola viene incrementato di 1 ad ogni passaggio (è il riporto della somma) mentre le cifre dopo la virgola rappresentano il resto. |
| $0,88$ | |
| $2,015$ | |
| $20,15$ | Quando il resto nelle prime due colonne diventa inferiore a 12, sposto di una posizione verso destra la virgola e le colonne su cui sommo 88 |
| _$0,88$ | |
| $21,03$ | Alla fine sul totalizzatore si legge $21,03$, dove le cifre prima della virgola rappresentano il quoziente (21) e quelle successive il resto (3). |

Si sarebbe potuta continuare l'operazione per ottenere un quoziente con una o più cifre decimali. Le variazioni sono facilmente intuibili: basta utilizzare una seconda virgola sul totalizzatore.

