salve. una domanda che può interessare a tutti: come fa un computer a moltiplicare e a dividere due numeri con le porte logiche? esiste la possibilità di avere uno schema elettrico? grazie e complimenti per il sito.

Vi sono vari metodi per eseguire le moltiplicazioni e le divisioni dei numeri binari. Il metodo concettualmente più semplice è quello delle addizioni ripetute per fare la moltiplicazione e delle sottrazioni ripetute per fare una divisione.

Per eseguire la moltiplicazione   a·b   basta fare la somma   a+a+a+…+a   per b volte, mentre per eseguire la divisione        a/b   si farà     a-b-b…-b  fino ad arrivare a zero: il numero di sottrazioni dà il quoziente.

Quindi per fare le moltiplicazioni e le divisioni è necessario saper fare le addizioni (le sottrazioni sono un caso particolare delle addizioni, e addirittura codificando i numeri in un formato particolare, cioè in complemento a 2, non vi è alcuna differenza tra le due operazioni). L’addizione di due numeri binari si fa come per quelli decimali: si mettono in colonna e si sommano le singole cifre:

          an   an-1   …   a1      a0   +

          bn   bn-1   …   b1      b0   =


                         …             a0+b0

in decimale se la somma delle cifre raggiunge dieci si scrive l’ultima cifra e si riporta la decina sulla colonna successiva, analogamente per i binari se la somma raggiunge 2 (10)b si scrive 0 e si riporta 1 sulla colonna successiva:

         an   an-1   …   a1      a0   +

          bn   bn-1   …   b1      b0   +

          cn    cn-1   …   c1              =


           sn   sn-1   …   s1      s0

Il circuito che implementa questa operazione è abbastanza semplice e soprattutto è modulare, cioè può essere composto da un numero arbitrario di cellette elementari per poter fare addizioni di una lunghezza voluta.
L’operazione di addizione di due numeri ad un bit è uguale alla operazione di XOR (or esclusivo) che dà uno se uno solo degli ingressi è uno:
questa è la tabella della verità di questa operazione e a fianco è riportato il simbolo circuitale

Per eseguire le operazioni su numeri a più bit bisogna considerare il riporto (carry in inglese): la celletta elementare che esegue la somma ad un bit con il riporto si chiama sommatore completo (full-adder)

Per moltiplicare due numeri di n bit ciascuno occorre allora un sommatore completo a 2·n bit ed occorrono 2n-1 iterazioni (nel caso peggiore): per numeri di 32 bit sono 4 miliardi di iterazioni (!)

Il problema di questo approccio è l’elevato numero di operazioni. Si risparmiano molte operazioni facendo la moltiplicazione come per i numeri decimali, sommando i prodotti parziali del moltiplicando con le singole cifre del moltiplicatore:

In questo caso il numero di moltiplicazioni e di addizioni è n2 cioè circa 1000 per numeri di 32 bit, inoltre n di esse vengono eseguite in parallelo tramite una rete combinatoria, quindi il risultato è quasi istantaneo, a parte il ritardo di transito nelle porte logiche.

I prodotti bit a bit sono effettuati tramite l’operazione AND, di cui è riportata la tabella di verità e il simbolo circuitale:

Le somme in colonna sono implementate con dei full adder.
Esistono anche altri algoritmi ancora più efficienti.

La divisione, oltre al metodo banale e impraticabile delle sottrazioni ripetute, può essere effettuata ancora con il metodo standard della divisione dei numeri decimali:

L’algoritmo si implementa con un’iterazione da 1 a n, due shift register e un sommatore a 2·n bit.