Circuiti logici per le operazioni sui numeri naturali e sui numeri interi
"'Dio fece i numeri naturali; tutto il resto è opera dell'uomo' sosteneva il matematico tedesco Leopold Kronecker, in conflitto essenzialmente con l'altro matematico tedesco Georg Cantor. Diamogli ragione e, sicuri di saperli esprimere in qualunque base utilizzando un opportuno numero di cifre, ripassiamo e analizziamo le operazioni aritmetiche più comuni che li riguardano (ce le hanno spiegate alla scuola elementare), con lo scopo di ricavare le reti logiche che le possano implementare. I numeri interi li ha quindi sicuramente inventati l'uomo e, analogamente a quanto fatto per i numeri naturali, come si opera con essi, ce l'hanno spiegato alla scuola media. In quella sede non ci si pose tuttavia il problema della differenza tra numero intero in senso astratto e la sua rappresentazione. Questo problema non è eludibile se si vuole, come vogliamo, ricavare le reti logiche di supporto alle più comuni operazioni sui numeri interi. E noi lo affronteremo in modo abbastanza approfondito. Con riferimento ai numeri naturali, la linea che seguiremo nel ricavare la struttura delle varie reti logiche risponderà sempre al seguente criterio: dimostrare come una rete che operai su numeri a più cifre può essere ottenuta interconnettendo due reti funzionalmente identiche fra di loro e alla rete totale, ma che operano su numeri con meno cifre. In questa decomposizione sceglieremo una delle reti come la più elementare possibile (rispetto al problema da risolvere) lasciando al lettore il compito di applicare all'altra rete un'ulteriore decomposizione fino ad arrivare, con un processo iterabile, a ridurre la rete iniziale a un'interconnessione di sole reti elementari. La struttura delle reti elementari è ampiamente rintracciabile in letteratura e sarà da noi delineata, spesso usando il linguaggio Verilog come linguaggio di descrizione. Con riferimento ai numeri interi, assoceremo a ciascuno di essi un numero naturale (al più un bit e un numero naturale) che lo rappresenti, riconducendo in tal modo il problema di individuare le reti logiche che operano sui numeri interi a quello di un opportuno utilizzo di reti logiche che operano sui numeri naturali. Ci sono alcuni problemi di terminologia. Ad esempio, la rete logica che esegue l'operazione di moltiplicazione tra un moltiplicando e un moltiplicatore è detta moltiplicatore. Il contesto dovrebbe aiutarci a capire se con il termine moltiplicatore si intende una rete logica o un numero. Per evitare equivoci faremo comunque precedere il nome di una rete logica dal sostantivo circuito e quindi, con riferimento al caso precedente, diremo che il circuito moltiplicatore esegue la moltiplicazione tra un moltiplicando e un moltiplicatore. Un'ultima considerazione: rimane un miracolo per me (e per voi, dopo aver letto questo testo) su come i nostri docenti della scuola elementare e media siano riusciti a farci capire gli algoritmi (anche se non li chiamavano così) per le operazioni aritmetiche sui numeri naturali e interi e, se non ricordo male, anche sui numeri frazionari." (dalla prefazione)
Al momento non disponibile, ordinabile in 3 settimane circa