Sei sulla pagina 1di 91

Appunti sullAritmetica dei Calcolatori

Giovanni Stea
a.a. 2013/14
Ultima modifica: 06/12/2013

Appunti sullAritmetica dei Calcolatori Giovanni Stea


Sommario
1

Rappresentazione dei numeri naturali .......................................................................................... 5


1.1
1.1.1
1.2

Propriet delloperatore modulo ...................................................................................... 7


Correttezza ed unicit della rappresentazione dei numeri in una data base ......................... 8

1.2.1

Rappresentazione su un numero finito di cifre ................................................................ 9

1.2.2

Esercizio (da fare a casa) ............................................................................................... 10

Elaborazione di numeri naturali tramite reti combinatorie ........................................................ 11


2.1
2.1.1
2.2

Complemento ..................................................................................................................... 13
Circuito logico per loperazione di complemento ......................................................... 14
Moltiplicazione e divisione per una potenza della base..................................................... 16

2.2.1

Moltiplicazione per k .................................................................................................... 17

2.2.2

Divisione (quoziente) per k .......................................................................................... 18

2.2.3

Modulo k....................................................................................................................... 18

2.3

Estensione di campo .......................................................................................................... 19

2.4

Addizione ........................................................................................................................... 19

2.4.1

Full Adder in base 2 ....................................................................................................... 22

2.4.2

Tempi di risposta e circuito di lookahead ...................................................................... 24

2.4.3

Incrementatore ............................................................................................................... 25

2.4.4

Esercizio (da fare a casa) ............................................................................................... 26

2.4.5

Esercizio (da fare a casa) ............................................................................................... 26

2.4.6

Esercizio (da fare a casa) ............................................................................................... 26

2.5

Sottrazione ......................................................................................................................... 27

2.5.1

Comparazione di numeri naturali................................................................................... 29

2.5.2

Sommatore/sottrattore in base 2..................................................................................... 29

2.6

Moltiplicazione .................................................................................................................. 30

2.6.1

Moltiplicatore con addizionatore nx1 in base 2 ............................................................. 32

2.6.2

Algoritmi per il calcolo iterativo del prodotto ............................................................... 33

2.6.3

Esercizio ......................................................................................................................... 35

2.7

Teorema della divisione con resto ....................................................................................... 6

Divisione ............................................................................................................................ 36

2.7.1

Divisore elementare in base 2 ........................................................................................ 40

2.7.2

Esercizio (da fare a casa) ............................................................................................... 41

2.7.3

Esercizio svolto .............................................................................................................. 42

Rappresentazione dei numeri interi ........................................................................................... 46


2

Appunti sullAritmetica dei Calcolatori Giovanni Stea


3.1

Possibili leggi di rappresentazione dei numeri interi ......................................................... 49

3.2

Propriet del complemento alla radice ............................................................................... 50

3.2.1
4

Operazioni su interi in complemento alla radice ....................................................................... 54


4.1
4.1.1

Circuito di conversione da CR a MS ............................................................................. 56


Cambiamento di segno ....................................................................................................... 56

4.3

Estensione di campo .......................................................................................................... 58

4.4
4.4.1
4.5
4.5.1

Esercizio (da fare a casa) ............................................................................................... 59


Riduzione di campo ........................................................................................................... 59
Esercizio (da fare a casa) ............................................................................................... 61
Moltiplicazione/Divisione per potenza della base ............................................................. 61
Shift Logico ed Aritmetico ............................................................................................ 61

4.6

Somma ............................................................................................................................... 62

4.7

Sottrazione ......................................................................................................................... 65

4.7.1
4.8

Comparazione di numeri interi ...................................................................................... 65


Moltiplicazione e divisione ................................................................................................ 66

4.8.1

Circuito di conversione da MS a CR ............................................................................. 66

4.8.2

Moltiplicazione .............................................................................................................. 67

4.8.3

Divisione ........................................................................................................................ 68

4.9
4.9.1

Valore assoluto................................................................................................................... 54

4.2

4.3.1

Esercizio (da fare a casa) ............................................................................................... 53

Conversione di base tra interi ............................................................................................ 71


Esercizio (da fare a casa) ............................................................................................... 72

Soluzioni degli esercizi per casa ................................................................................................ 73


5.1

Soluzione esercizio 1.2.2 ................................................................................................... 73

5.2

Soluzione dellesercizio 2.4.4 ............................................................................................ 74

5.3

Soluzione dellesercizio 2.4.5 ............................................................................................ 76

5.4

Soluzione dellesercizio 2.4.6 ............................................................................................ 77

5.5

Soluzione dellesercizio 2.7.2 ............................................................................................ 78

5.6

Soluzione dellesercizio 3.2.1 ............................................................................................ 79

5.7

Soluzione dellesercizio 4.3.1 ............................................................................................ 80

5.8

Soluzione dellesercizio 4.4.1 ............................................................................................ 81

5.9

Soluzione dellesercizio 4.9.1 ............................................................................................ 82

Altri esercizi svolti ..................................................................................................................... 84


6.1

Esercizio Febbraio 2006 (numeri naturali e interi) ......................................................... 84


3

Appunti sullAritmetica dei Calcolatori Giovanni Stea


6.1.1
6.2

Soluzione........................................................................................................................ 84
Esercizio Gennaio 2008 (numeri naturali) ...................................................................... 85

6.2.1
6.3

Soluzione........................................................................................................................ 86
Esercizio Febbraio 2005 (numeri naturali) ..................................................................... 87

6.3.1
6.4

Soluzione........................................................................................................................ 87
Esercizio Giugno 2004 (numeri interi) ........................................................................... 88

6.4.1
6.5

Soluzione........................................................................................................................ 89
Esercizio Settembre 2012 (numeri interi) ....................................................................... 89

6.5.1

Soluzione........................................................................................................................ 90

Version history
-

12/10/12: Modifiche di formule a pag. 6, 8

17/12/12: Modifiche cosmetiche su tutta la parte degli interi (riguardanti esclusivamente


cose dette a lezione, o comunque dette meglio a lezione).

17/12/12: Aggiunta di esercizi svolti alla fine.

21/10/13: Aggiunti esercizi svolti nel testo ed in fondo.

06/12/13: Aggiunto lesercizio 2.7.3 svolto a lezione. Modifiche cosmetiche su cose dette
a lezione.

Appunti sullAritmetica dei Calcolatori Giovanni Stea

1 Rappresentazione dei numeri naturali


Si parte da un concetto intuitivo, che quello di numero naturale. I naturali sono i numeri con cui si
conta. Esistono definizioni pi formali di cosa sia un numero naturale, ma in questo ambito non ci
interessano.
Un sistema numerico di rappresentazione di tipo posizionale si compone di:
1) Un numero 2 , detto base di rappresentazione. Nel caso del sistema decimale, = 10 .
2) Un insieme di simboli, detti cifre, a ciascuno dei quali associato un numero naturale
compreso tra 0 e 1 .
3) Una legge che fa corrispondere ad ogni sequenza di cifre un numero naturale.
Dato il numero A N , lo rappresento in base con una sequenza di cifre ( an 1an 2 ...a1a0 ) , con
0 ai 1 , 0 i n 1 . Dir in tal caso che A ( an 1an 2 ...a1a0 ) . Nel caso di sistema numerico
di tipo posizionale, la legge che fa corrispondere il numero naturale con la sua rappresentazione
n 1

A = ai i .
i=0

Notazione posizionale significa che, nella rappresentazione di un numero naturale, una cifra contribuisce a determinare il numero in modo differente a seconda della propria posizione. Infatti, a
seconda della propria posizione sar moltiplicata per una differente potenza della base.
La notazione posizionale non lunico modo possibile di rappresentare i numeri. Fino al 1200 in
Europa sono stati usati i numeri romani, nei quali ogni simbolo ha un valore indipendente dalla
propria posizione (sistema additivo). Fu peraltro un pisano, Leonardo Fibonacci, ad introdurre in
Europa la notazione posizionale, avendola appresa dagli Arabi.
Esempio: sistema numerico decimale

= 10 . Le cifre sono {0,1,2,3, 4,5,6,7,8,9} . ( 2042 )10 = 2 100 + 4 101 + 0 102 + 2 103
A ben guardare, quando dico il numero 54 sto in realt menzionando contemporaneamente:
- il numero naturale, quale concetto intuitivo
- la sua rappresentazione in base 10 in notazione posizionale.
Dovremmo tener distinte le due cose, a rigor di logica. In pratica impossibile, e quindi non lo
faremo.
Esempio: sistema numerico esadecimale

= 16 . Le cifre sono {0,1,2,3,4,5,6,7,8,9, A, B, C , D, E, F } .


5

Appunti sullAritmetica dei Calcolatori Giovanni Stea


Abbiamo che ( A)16 = (10 )10 , , ( F )16 = (15 )10

(1A2 F )16 = ( F )16 (160 )10 + ( 2 )16 (16 )10 + ( A)16 (162 )10 + (1)16 (163 )10
= (15 )10 (160 ) + ( 2 )10 (16 )10 + (10 )10 (162 ) + (1)10 (163 )
10

10

10

= 15 1 + 2 16 + 10 256 + 1 4096 = 9231


Esempio: sistema numerico binario

= 2 . Le cifre sono {0,1} .


Questo il sistema usato nei calcolatori per effettuare operazioni aritmetiche.

1.1 Teorema della divisione con resto


Domande. Data una base di rappresentazione, posso sempre rappresentare un numero in quella
base? La sua rappresentazione, data una base, unica? Come faccio a trovarla? Quante cifre mi
servono? La risposta a tutte queste domande passa per il seguente:

Teorema della Divisione con Resto


Dato x , N , > 0 , esiste ed unica la coppia di numeri q , r , con q e r ,
0 r < , tale che x = q + r .

Dimostrazione
Esistenza: Dimostriamo che una coppia di numeri con queste caratteristiche esiste sempre. Si prende lasse dei numeri interi e lo si divide in blocchi n , ( n + 1) , n .
n = 1

n = 2
2

n =1

n=0

n=2
2

Linsieme di questi intervalli ricopre tutto quanto lasse dei numeri interi. n , ( n + 1) .
n
Pertanto, il numero x fa parte di un intervallo, sia il q -simo. Allora q x < ( q + 1) . Definisco allora r = x q , ed ho garanzia che 0 r < . Ho quindi dimostrato che una tale coppia
esiste sempre.

( q2 , r2 )

diverse tali che

( q1 q2 ) = r2 r1 .

Per per ipotesi

Unicit: Supponiamo per assurdo che esistano due coppie


x = q1 + r1 = q2 + r2 , con qi e 0 ri < . Allora

( q1, r1 )

0 r1 < e 0 r2 < , con il che < ( r2 r1 ) < .

Appunti sullAritmetica dei Calcolatori Giovanni Stea


Da questo si ricava che < ( q1 q2 ) < , cio che 1 < ( q1 q2 ) < 1 . Visto che q1 , q2 , ne
consegue che q1 = q2 .
Visto che q1 = q2 , allora anche r1 = r2 , contro lipotesi. Questo dimostra che la divisione col resto
ha un unico risultato.
Attenzione: lunicit garantita (ed ha come condizione indispensabile) dal fatto che r un numero naturale, compreso tra 0 e -1.
In forza di quanto appena dimostrato, diamo a q il nome di quoziente, e ad r il nome di resto
della divisione di x per . Dora in avanti li indichiamo come:
x
q = , r = x

Parte intera inferiore della


frazione x/beta

r modulo beta

1.1.1 Propriet delloperatore modulo


Loperatore modulo ha una serie di propriet, che vanno sapute perch saranno usate nel seguito.
Dato , > 0 :
x

x
1) x + k = x , k . Infatti x = + x , e quindi x + k = + k + x . Ma

x
+ k sempre un numero intero, e x sempre un numero compreso tra 0 e 1 . Quindi,

per lunicit del teorema della divisione con resto, quelli sono quoziente e resto della divisione per

di x + k .
2) x = x

+A

, A . Anche qui: 0 x < + A . Quindi, la divisione di x per + A

ha quoziente nullo e resto x .


3) x + y = x + y . Infatti, x + y = x + y + ( qx + q y ) . Ma applicando la prima

propriet dimostrata si ottiene la tesi.


4) x y = x y

x y =

(x

. Infatti,

+ qx ) ( y + q y ) = x y + ( x q y ) + ( y qx ) + qx q y 2

= x y + k

Ed applicando ancora una volta la prima propriet si dimostra anche questa.

Appunti sullAritmetica dei Calcolatori Giovanni Stea

1.2 Correttezza ed unicit della rappresentazione dei numeri in una


data base
Il teorema della divisione con resto mi consente di trovare la rappresentazione di un numero naturale in una qualunque base. Data una base , devo trovare A ( an 1an 2 ...a1a0 ) , n cifre tali che
n 1

A = ai i .
i=0

Le trovo applicando iterativamente il teorema del resto (algoritmo delle divisioni successive, o
MOD & DIV):
A = q1 + a0
q1 = q2 + a1

...
qn 1 = 0 + an 1

Mi fermo, ovviamente, quando lultimo quoziente nullo. A quel punto, la n-upla di resti, letta dal
basso verso lalto, costituisce linsieme di cifre che rappresentano lintero A in base . Vediamo
di dimostrarlo:
Sostituendo a qi la propria definizione, si ottiene:

A = a0 + q1 = a0 + a1 + ( a2 + (...) )

n 1

E quindi A = ai i .
i =0

Inoltre, il teorema della divisione con resto garantisce anche che la n-upla di cifre che ho trovato
unica.

Infatti,

supponiamo

per

assurdo

che

ne

esistano

due

A ( an 1an 2 ...a1a0 ) ,

A ( bn 1bn 2 ...b1b0 ) . Supponendo quindi che esistano A ( an 1an 2 ...a1a0 ) , A ( bn 1bn 2 ...b1b0 ) ,

tali che

n 1

n 1

i =0

i=0

ai i = bi i , si ottiene che:
n2

n2

a0 + ai +1 i = b0 + bi +1 i
i =0

i =0

Ma 0 a0 , b0 < 1 , e quindi per lunicit si ottiene necessariamente che a0 = b0 .

Appunti sullAritmetica dei Calcolatori Giovanni Stea


Quindi, andando avanti:
n2

n2

a0 + ai +1 i = b0 + bi +1 i
i=0

i =0

n 2

n 2

i =1

i =1

a1 + ai +1 i 1 = b1 + bi +1 i 1

Ma allora anche a1 = b1 , e cos via per tutti gli altri. Pertanto la rappresentazione unica.

Peraltro, quella trovata prima una maniera algoritmica di trovare le cifre della rappresentazione di
un numero naturale in una qualunque base.
Quante cifre servono?
A
A A a + a + 2 q2 a0 + a1
qi = i . Infatti, q1 = , 2 = 0 1 2
=
+ q2 = q2 etc.
2



Quindi, se 2 , n : qn = 0 . Il che conferma che lalgoritmo termina sempre. Basta sempre un
numero finito di cifre. Prendiamo il pi piccolo n che verifica quella propriet, cio quello per cui
qn 1 0, : a questo punto, n 1 A < n . Ho quindi bisogno di n cifre per rappresentare A in base

. Per calcolare n posso osservare che:

n A + 1 n = log ( A + 1) , oppure, in alternativa, n = log A + 1 . Le due espressioni sono


identiche (sia che il log A sia intero, sia che non sia intero).

1.2.1 Rappresentazione su un numero finito di cifre


Ovviamente, se ho a disposizione una quantit finita di cifre in una data base, potr rappresentare
una quantit finita di numeri naturali. In particolare, data una base ed n cifre, non potr che
rappresentare quei numeri per i quali lalgoritmo di cui sopra termina entro n passi, cio quei
numeri tali per cui A < n . Quindi, il numero naturale pi grande che posso rappresentare n 1
. Qual la rappresentazione di questo numero?
In base 10, il numero pi grande che posso rappresentare su n cifre 99999. In generale, in base

, quello che ottengo quando tutte le cifre hanno valore massimo, cio ai = 1 . Infatti, si
ottiene:
n 1

n 1

n 1

n 1

i=0

i=0

i=0

i =1

i =0

A = ( 1) i = i +1 i = i i = n 1
Questo un modo di rappresentare n 1 . Ma visto che rappresentazione unica, la rappresentazione di n 1 .

Appunti sullAritmetica dei Calcolatori Giovanni Stea

1.2.2 Esercizio (da fare a casa)


1) Sia A = ( an 1 a0 ) un numero naturale rappresentato su n cifre in base . Si dimostri che,
dato sottomultiplo di , A = a0 . Si osservi che, per = 10 , si ricava il (noto) criterio di
divisibilit per due e per cinque dei numeri naturali.
2) Sia A = ( an 1 a0 ) 4 un numero naturale rappresentato su n cifre in base quattro. Dimostrare che

A 3 = 0 se e solo se

n 1

= 0 , ovvero che A multiplo di tre se e solo se lo la somma delle

i =0

sue cifre.
3) Estendere la precedente dimostrazione al caso di numero A in base > 2 generica: sia
A = ( an 1 a0 ) un numero naturale rappresentato su n cifre in base , > 2 , dimostrare che
A = 0 se e solo se

n 1

a
i =0

= 0 , dove un qualunque sottomultiplo di 1 .

Si osservi che, per = 10 , si ricava il (noto) criterio di divisibilit per tre dei numeri naturali.
4) Dato A in base su n cifre dimostrare che A ( +1) = 0 se e solo se

n 1

( 1) a
i=0

= 0 . Si

( +1)

osservi che, per = 10 , si ricava il (probabilmente poco noto) criterio di divisibilit per undici
dei numeri naturali.

Nota: per risolvere i punti 2, 3, 4, pu far comodo avvalersi della (nota) formula dello sviluppo di
binomio di Newton, qui richiamata per facilitare lo studente:
n n


n
a
+
b
=
(
) a n k b k
k = 0 k

Soluzione

10

Appunti sullAritmetica dei Calcolatori Giovanni Stea

2 Elaborazione di numeri naturali tramite reti combinatorie


Tutto quanto quello che stato detto finora prescinde dalla rappresentazione dellinformazione
allinterno di un calcolatore.
Il nostro obiettivo costruire reti logiche che elaborino numeri naturali rappresentati in una data
base . Reti, cio, che producano in uscita le cifre in base del risultato, date le cifre in base

degli operandi come ingresso.


Le reti logiche, ovviamente, operano su variabili logiche. Quindi, per raggiungere lobiettivo, sono
necessarie due cose.
1) stabilire la codifica di una cifra in base in termini di variabili logiche.
2) Descrivere e sintetizzare la rete logica che svolge loperazione

Che tipo di reti logiche saranno quelle che andr a costruire? Saranno reti combinatorie, in quanto
ad ogni stato di ingresso (operandi di unoperazione) corrisponder uno stato di uscita (risultato
delloperazione).

Per quanto riguarda la codifica, vediamo di farsi qualche idea:


-

se = 2 , la codifica banale. Una variabile logica codifica una cifra in base 2.

Se > 2 , ci vorranno un certo numero di variabili logiche per codificare una cifra in base

Esempio: codifica BCD per le cifre in base 10

stringa di 4 bit.
J x3 x2 x1 x0
0 0 0 0 0
1 0 0 0 1
2 0 0 1 0
3 0 0 1 1
4 0 1 0 0
5 0 1 0 1
6 0 1 1 0
7 0 1 1 1
8 1 0 0 0
9 1 0 0 1

Posso costruire una rete combinatoria che esegua la


somma di due numeri in base 10 codificati BCD su 1
cifra, e mi produca il risultato su 2 cifre (infatti, il
risultato massimo 9+9=18, che non sta su una cifra).
Tale rete combinatoria avr 4+4=8 variabili logiche di
ingresso e 4+4=8 variabili logiche di uscita, e la chiamer sommatore ad 1 cifra per numeri naturali in
base 10 con codifica BCD. Questa non una rete che
opera somme su numeri in base 2.

Infatti, se do in ingresso al sommatore i numeri naturali 1 e 9, codificati BCD. Luscita, su 2 cifre,


dovr essere corrispondente al numero 10. Quindi:
11

Appunti sullAritmetica dei Calcolatori Giovanni Stea


-

stato di ingresso: 0001 1001 (codifica BCD dei due addendi)

stato di uscita: 0001 0000 (codifica BCD delle due cifre del risultato)

Questo circuito non ha eseguito la somma in base 2 degli ingressi. Se lo avesse fatto, avrebbe
dovuto produrre
-

unuscita su 5 cifre binarie, dato che pu valere al massimo 18

unuscita pari a 01010 , che effettivamente la somma degli ingressi, considerati come numeri in base 2.

Nel seguito, faremo quanto segue:


1. prendiamo in esame le operazioni aritmetiche di base (somme, sottrazioni, etc.). Ne daremo
una descrizione indipendente dalla base, valida quindi per qualunque base.
2. Cercheremo, facendo conto sulle propriet della notazione posizionale, di rendere tali
operazioni pi semplici.
3. Dettaglieremo le reti logiche (a livello di porte elementari) che le eseguono in base 2, che
la base in cui lavorano i calcolatori.

Per poterlo fare, necessario dotarsi di una notazione indipendente dalla base.
Per rappresentare graficamente il fatto che un numero A individuato da una serie di n cifre in base

, scriveremo:

Ciascuna di queste doppie frecce rappresenta il numero di variabili logiche necessario a codificare
una cifra in base . Per esempio, per = 10 avremmo quattro variabili logiche per cifra. Nel caso
particolare = 2 useremo invece frecce singole, perch una cifra in base 2 pu essere codificata da
una variabile logica.

12

Ad esempio, vogliamo poter costruire reti tipo questa,


che prendono in ingresso due numeri in base e
producono la somma di questi due numeri.

J x3 x2 x1 x0
0 0 0 0 0
1 0 0 0 1
2 0 0 1 0
3 0 0 1 1
4 0 1 0 0
5 0 1 0 1
6 0 1 1 0
7 0 1 1 1
8 1 0 0 0
9 1 0 0 1

2.1 Complemento
unoperazione particolarmente ricorrente, anche se a prima vista sembra inutile. Dato un numero
A ( an 1an 2 ...a1a0 ) , rappresentato in base su n cifre, 0 A < n , definisco complemento di A

(in base su n cifre) il numero:


A n 1 A

Cio, A quel numero che sommato ad A d il massimo numero rappresentabile in base su n


cifre.
Esempi:
- (1034 )10 = ( 8965 )10
- (1034 )5 = ( 3410 )5

Attenzione: il complemento richiede che si


specifichi il numero di cifre. Infatti,

( 001034 )10 = ( 998965 )10 .


I numeri di partenza sono gli stessi, ma rappresentati su un numero diverso di cifre. Il complemento diverso.

Come faccio a trovare le cifre della rappresentazione di A conoscendo quella di A?


La prima cosa da chiedersi quando si definisce unoperazione su quante cifre sta il risultato.

Appunti sullAritmetica dei Calcolatori Giovanni Stea


Nel nostro caso, se 0 A < n , allora anche 0 A < n , quindi sono certo che A rappresentabile
su n cifre. Dalla definizione ricavo che:
n 1

n 1

n 1

i =0

i =0

i =0

A = ( 1) i ai i = ( 1 ai ) i

n 1

Ma:

- 1 ai una cifra in base , in quanto compresa tra 0 e -1.


- 1 ai , dalla definizione, il complemento del numero naturale ai su una cifra in base .
Quindi, le cifre in base della rappresentazione di A sono ai = 1 ai . Ogni cifra di A si

ottiene complementando la corrispondente cifra di A. A an 1 an 2 ... a1 a0

2.1.1 Circuito logico per loperazione di complemento


Supponiamo di voler sintetizzare un circuito che esegua il complemento di un numero in base su
n cifre.

Basta quindi che sappia fare una rete che fa il complemento di una singola cifra. Vediamo come
sono fatte le reti nelle varie basi.
In base =2, tale rete estremamente semplice. Infatti, la rete elementare che:
-

se la cifra 1 ritorna 0

se la cifra 0 ritorna 1

Cio la porta elementare NOT. In base 2 il complemento di un numero su n cifre si fa con una
barriera di n invertitori. Ci accade perch le cifre in base 2 (0, 1) sono codificate in termini di una
singola variabile logica.
Vediamo adesso di ragionare in base 10. Scegliamo una codifica, e vediamo come si sintetizza la
rete che realizza il complemento di una singola cifra in quella codifica. Scegliamo lunica che
conosciamo, cio la BCD (detta anche 8421, dal peso associato a ciascuna cifra).

14

X
J x3 x2 x1
0 0 0 0
1 0 0 0
2 0 0 1
3 0 0 1
4 0 1 0
5 0 1 0
6 0 1 1
7 0 1 1
8 1 0 0
9 1 0 0
Vediamo di affrontarne la sintesi. Per fare le

X
x0 z 3 z 2 z 1 z 0
0 1 0 0 1
1 1 0 0 0
0 0 1 1 1
1 0 1 1 0
0 0 1 0 1
1 0 1 0 0
0 0 0 1 1
1 0 0 1 0
0 0 0 0 1
1 0 0 0 0
cose bene andrebbe

J
9
8
7
6
5
4
3
2
1
0
usata 4

A regola andrebbe disegnato


anche il resto della tabella di
verit. Tanto sappiamo che
le uscite non sono specificate per J>9

volte la mappa di Kar-

naugh (una per ciascuna uscita). Per mi interessa arrivare ad una sintesi qualunque, non fare quella
a costo minimo, e quindi posso procedere a occhio, a rischio di fare una sintesi non ottima:
-

si vede al volo che z0 = x0 , z1 = x1

si vede al volo che z3 = x3 x2 x1

si vede al volo che z2 = x1 x2 (posso scriverlo perch ci sono degli stati non specificati)

Quindi, per fare il complemento di una cifra in base 10 codificata BCD si deve usare un po di
logica. Non troppa, ma un po s.

Ai fini della realizzazione del complemento in modo efficiente, si possono pensare altre codifiche
per la base 10, dette autocomplementanti. Una codifica si dice autocomplementante quando il
complemento della rappresentazione uguale alla rappresentazione del complemento, quando cio posso ottenere il complemento di una cifra semplicemente facendo il complemento delle
variabili logiche che la codificano. La codifica BCD non autocomplementante.

Esempio: codifica eccesso 3


Si rappresenta una cifra X in base 10 come la cifra
X+3 in base 2.

X
J x3 x2 x1 x0
0 0 0 1 1
1 0 1 0 0
2 0 1 0 1
3 0 1 1 0
4 0 1 1 1
5 1 0 0 0
6 1 0 0 1
7 1 0 1 0
8 1 0 1 1
9 1 1 0 0

Esempio: codifica 2421


Ogni cifra decimale viene codificata con una quaterna
di bit. A ciascuna di queste si assegna peso 2, 4, 2, 1, a
seconda della posizione. Con questo metodo esistono,
per alcune cifre, diverse scelte equivalenti. Ad esempio, posso decidere che 3 rappresentato come 1001 o
come 0011. Ad esempio 6 pu essere rappresentato
come 1100 o come 0110. Per se scelgo che 3 rappresentato come 1001, vorr dire che sceglier il suo
complemento, cio 6, come 0110.

2
J x3
0 0
1 0
2 0
3 0
4 0
5 1
6 1
7 1
8 1
9 1

X
4 2 1
x2 x1 x0
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1

Per tali due posso utilizzare circuiti di complemento fatti da una barriera di invertitori, pi semplici dei precedenti.

Osservazione (importante):
-

Come faccio il complemento di una cifra in base dipende dalla base e dalla codifica.

Il fatto che il complemento di un numero su n cifre possa essere eseguito complementando


le singole cifre non dipende n dalla base n dalla codifica. in realt una propriet della
notazione posizionale. La ho infatti descritta in termini algebrici, senza indicare una base
precisa.

Nel seguito di questa parte del corso descriveremo propriet della notazione posizionale che consentono, come quella vista adesso, di scindere problemi complessi in sottoproblemi pi semplici,
in maniera indipendente dalla base e dalla codifica.

2.2 Moltiplicazione e divisione per una potenza della base


Devo eseguire una moltiplicazione (divisione) per k .
Domande:
-

Quando, in base 10, devo calcolare 25x1000, faccio forse i conti? No, metto tre zeri in fondo
al numero.

Quando devo calcolare 2562/100, resto e quoziente, faccio forse i conti? No: il resto 62, ed
il quoziente 25.

Appunti sullAritmetica dei Calcolatori Giovanni Stea


Tutto questo perch sto moltiplicando e dividendo per una potenza della base in cui lavoro (la base
10, appunto). Questa unaltra propriet della notazione posizionale, valida in qualunque base.
Vediamo di dare una dimostrazione formale delle propriet che abbiamo appena intuito.

2.2.1 Moltiplicazione per k


Dato X ( xn 1 xn 2 ...x0 ) , definisco Y = X , e voglio trovare le cifre che rappresentano Y . Si fa
inizialmente per k = 1 , e poi si generalizza.
-

La prima domanda da farsi quando si considera unoperazione (qualunque) : su quante


cifre sta il risultato? X n 1 Y ( n 1) < n +1 1 , cio Y rappresentabile sicuramente su n+1 cifre.

n 1

n 1

i =0

i =0

i=0

i =1

X = xi i Y = yi i = xi i +1 = xi 1 i . Ma, dato che Y ( yn yn 1... y0 ) , visto

che ho appena dimostrato che sta su n+1 cifre, dalla precedente uguaglianza ottengo:
Y ( yn yn 1... y0 ) ( xn 1 xn 2 ...x0 0 ) . Quindi, si ottiene:

1 i n
x
yi = i 1
i=0
0
Questa una soluzione della precedente uguaglianza. Visto che la rappresentazione di un numero in
una data base unica, allora questa lunica soluzione. Quindi: Y ( xn 1 xn 2 ...x0 0 ) . La rete che
implementa questa cosa a complessit nulla (shift). Cos come il procedimento mentale per
ottenere i risultati di complessit nulla, possiamo sintetizzare una rete di complessit nulla che
esegue questo procedimento.

Ovviamente, il tutto si generalizza alla moltiplicazione per k . Il numero risultante ha n + k , cifre,


le ultime k delle quali sono nulle, e le prime n delle quali sono le cifre di X .

17

Appunti sullAritmetica dei Calcolatori Giovanni Stea


x
yi = i k
0

k i n + k 1
0 i k 1

2.2.2 Divisione (quoziente) per k


Anche in questo caso facciamo i conti inizialmente per k = 1 , e poi generalizziamo. Dato
X ( xn 1 xn 2 ...x0 ) , definisco Y = X , e voglio trovare le cifre che rappresentano Y .

Su quante cifre sta il risultato? X n 1 Y n 1 1 < n 1 , cio Y rappresentabile sicuramente su n-1 cifre

n 1
n 1

i
i
x

x
+
n 1
i 0 xi x n 2
n2
i =1
=
= 0 + xi +1 i = xi +1 i . Lultimo pasX = xi i Y = i = 0


i =0
i =0
i =0

saggio deriva dal fatto che x0 < 1 e la sommatoria un numero intero. Quindi, si ottiene:
yi = xi +1 , 0 i n 2
Anche in questo caso loperazione richiede una rete di complessit nulla:

Ed anche in questo caso, il tutto si generalizza alla divisione per k . Il numero risultante ha n k ,
cifre, corrispondenti alle n k cifre pi significative di X .
yi = xi + k , 0 i n 1 k

2.2.3 Modulo k
Dato X ( xn 1 xn 2 ...x0 ) , definisco Y = X
-

X n 1 Y n 1

, e voglio trovare le cifre che rappresentano Y .

k 1 , cio Y rappresentabile sicuramente su k cifre (per la

stessa definizione di modulo, cio resto della divisione).

18

Appunti sullAritmetica dei Calcolatori Giovanni Stea


n 1

X = xi i Y =
i =0

n 1

xi i
i=0

=
k

k 1

n 1

i=0

i =k

xi i + xi i

=
k

k 1

n 1 k

i=0

i =0

xi i + k

k 1

= xi i .

xi + k i
k

i=0

Quindi, si ottiene: yi = xi , 0 i k 1
Anche in questo caso loperazione richiede una rete di complessit nulla:

Quindi, dati due numeri Y e Z , rispettivamente a k ed n-k cifre, loperazione di concatenamento X = Z k + Y , che produce un numero su n cifre, di complessit nulla.
Allo stesso modo, ha complessit nulla loperazione inversa di scomposizione di un numero su n
cifre in due blocchi di k ed n-k cifre. Useremo spesso queste due operazioni.

2.3 Estensione di campo


Lestensione di campo loperazione con la quale si intende rappresentare un numero naturale
usando un numero di cifre maggiore. Quando si vuol scrivere il numero 32 su 4 cifre, si mettono
due zeri in testa. La stessa cosa si fa con i numeri naturali (attenzione: con gli interi sar diverso).
Dato X ( xn 1 xn 2 ...x0 ) , definisco X EST come il numero che vale quanto X ma rappresentato
su n+1 cifre. Lunica possibilit che X EST ( 0 xn 1 xn 2 ...x0 ) . O meglio, questa una possibilit,
ma visto che la rappresentazione unica, anche la sola.

2.4 Addizione
Riprendere la somma in base 10. Algoritmo imparato alle elementari.
19

= 10 . Lalgoritmo consiste in:


-

sommare le cifre di pari posizione singolarmente, partendo dalle meno significative

se la somma di due cifre non rappresentabile con una


sola cifra, usare il riporto per la coppia di cifre successive

Il riporto vale sempre 0 o 1. Per la prima coppia di cifre (quelle meno significative), possiamo assumerlo
nullo.

Dimostriamo adesso che lutilizzo di questo algoritmo non dipende dalla base di rappresentazione, ma soltanto dal fatto che usiamo una notazione posizionale. Pu pertanto essere usato per
sommare numeri in base qualunque.
Dati X , Y in base su n cifre, quindi 0 X , Y n 1 , e dato Cin , 0 Cin 1 , voglio calcolare
il numero Z = X + Y + Cin . Il termine Cin , che a prima vista non sembra essere di una qualche
utilit, gioca invece un ruolo fondamentale, in quanto consente di rendere loperazione modulare.
0 X + Y + Cin 2 n 1 n +1 1 , visto che 2 . Quindi, Z rappresentabile sempre su n+1

cifre. Vediamo qualche dettaglio in pi su queste n+1 cifre.


Posso scrivere Z come: Z = Cout n + S = X + Y + Cin . Per il teorema del resto, abbiamo:
X + Y + Cin
Cout =
, S = X + Y + Cin
n

Ma, visto che Z 2 n 1 , per lunicit della rappresentazione deve essere Cout < 2 . Quindi, visto
che un numero naturale, abbiamo che Cout {0,1} , e questo vero indipendentemente dalla
base.
Quindi: la somma di due numeri naturali espressi in base su n cifre, pi un eventuale riporto entrante che vale zero o uno, produce un numero naturale che sempre rappresentabile
con n+1 cifre in base , l(n+1)sima delle quali, detta riporto uscente, pu essere soltanto zero o
uno.
Posso quindi pensare di costruire un circuito che fa la somma di due numeri in base su n cifre.

Appunti sullAritmetica dei Calcolatori Giovanni Stea


X

Y
n

Cout

Cin

Frecce singole
(sono bit)

n
S

Questo circuito una rete combinatoria. Ovviamente, se n elevato, o se > 2 , sar molto complessa da sintetizzare. Vediamo di scomporre il problema della somma in sottoproblemi pi
semplici.
Scompongo le rappresentazioni di X ed Y in due parti distinte (operazione a costo nullo):

X = Xh l + Xl
Y = Yh l + Yl
Con X l , Yl su l cifre, e X h , Yh su n-l cifre, 1 l n .

3
4

Supponiamo di saper sommare separatamente i blocchi di l ed n-l cifre.


21

Appunti sullAritmetica dei Calcolatori Giovanni Stea

Ch n l + Sh = X h + Yh + Cl
Cl l + Sl = X l + Yl + Cin
Posso allora scrivere la somma finale come:

X + Y + Cin = ( X h + Yh ) l + X l + Yl + Cin
= ( X h + Yh ) l + Cl l + Sl

= ( X h + Yh + Cl ) + Sl
l

= ( Ch n l + S h ) l + S l

2
3

= Ch n + ( S h l + S l )
= Cout n + S

4
5

Posso quindi scomporre la somma in base su n cifre in somme in base su un minor numero di cifre, purch:
- esegua le somme partendo dai gruppi di cifre meno significativi
- sia in grado di propagare il riporto tra un gruppo ed il successivo.
Il circuito disegnato sopra si chiama, appunto, ripple carry (propagazione del riporto)
Tirando tutto questo alle sue estreme conseguenze, posso realizzare un sommatore in base su n
cifre utilizzando n sommatori in base ad una cifra (full adder) e propagando il riporto in uscita
dallo stadio j-simo in ingresso allo stadio j+1.

La presenza di un riporto uscente allo stadio n-simo va interpretata come segue:


-

se il riporto zero, la somma rappresentabile su n cifre, cio sul numero di cifre degli
operandi

se il riporto uno, la somma non rappresentabile su n cifre, ma ce ne vuole una in pi.

Listruzione macchina ADD, infatti, setta il CF quando il risultato non un numero naturale rappresentabile su n cifre.

2.4.1 Full Adder in base 2


Fin qui abbiamo descritto propriet della notazione posizionale, valide in qualunque base, che ci
consentono di scomporre una somma in somme pi semplici, addirittura somme ad una cifra. Come
effettivamente si realizza un full adder dipende dalla base e dalla codifica. Il full adder in base 2
un circuito che fa somme di una cifra in base 2, con riporto.

22

Xi

Yi

Cout

una rete combinatoria con 3 ingressi e 2


uscite, e quindi la sappiamo sintetizzare.

Cin

Si

xi
0
0
0
0
1
1
1
1

yi cin
0 0
0 1
1 0
1 1
0 0
0 1
1 0
1 1
-

si cout
0 0
1 0
1 0
0 1
1 0
0 1
0 1
1 1

cin
0

xiyi

si
00

01

11

10

cin

xiyi

cout
00

01

11

10

0
C

B
1

Per quanto riguarda la produzione del riporto uscente, non ci sono problemi: si pu fare in
forma SP con 3 porte AND a 2 ingressi ed una porta OR a tre ingressi.

Per quanto riguarda la produzione della somma si, osservo che essa ad uno se e solo se il
numero di 1 in ingresso dispari.

Per questultimo, esiste una semplice realizzazione, fatta tramite porte XOR. Mettere pi porte
XOR in cascata (eventualmente ad albero) consente di fare circuiti che riconoscono un numero
dispari di 1, che cio danno 1 quando lo stato di ingresso ha un numero dispari di 1.

Appunti sullAritmetica dei Calcolatori Giovanni Stea


Il full adder una rete a 2 livelli di logica. Detto il tempo di attraversamento di un singolo livello di logica, abbiamo che ciascun full adder ha un tempo di risposta = 2 .

2.4.2 Tempi di risposta e circuito di lookahead


Il problema che ci poniamo adesso il seguente: se lavoro in base 2, posso realizzare una somma di
un qualsiasi numero di cifre usando una catena di full adder, che sommano una cifra per volta.
Quale sar il tempo di risposta di questa rete?
Ciascun full adder richiede un tempo = 2 per produrre la propria coppia di risultati. In particolare, anche il riporto uscente sar prodotto dopo un tempo . Ma il riporto uscente serve da ingresso al full adder successivo. Quindi:

( n 1)

In totale, lultimo bit del risultato e lultimo riporto uscente vengono prodotti ad un istante n .
lo stesso problema che si sperimenta quando si fanno le somme a mano. Se dobbiamo sommare
numeri a 50 cifre, la 50ma somma pu essere fatta solo quando ho il riporto della 49-ma.
Lalgoritmo di somma scomponibile, ma purtroppo non parallelizzabile.
Si pu fare qualcosa? Certo che s. Possiamo investire risorse per aggiungere un circuito che, presi
in ingresso i j bit meno significativi di entrambi i numeri produce il riporto j-simo in uscita.
Questo circuito combinatorio, pur complesso, lo posso sintetizzare a due livelli di logica. In questo modo, la parte alta del circuito pu iniziare prima il proprio lavoro, in quanto dispone del
riporto entrante allistante = 2 invece che j ).

24

Appunti sullAritmetica dei Calcolatori Giovanni Stea

ovvio che:
- dovr sintetizzare un circuito complesso (che ha, in questo caso, 9 ingressi ed 1 uscita), ed in
teoria non strettamente necessario (in quanto il carry j-simo sarebbe comunque prodotto).
- questo circuito mi consente di anticipare la generazione del carry per gli stadi successivi.

Ad esempio, in una somma con operandi a 4n bit,


-

senza lookahead il tempo di risposta : 4 n

usando n-1 carry lookahead a 4 bit il tempo diventa: ( 4 + ( n 1) ) = ( n + 3) < 4 n

Quanto mi conviene fare grande il lookahead? Ci sono ovvi limiti di fattibilit (un lookahead a 32
bit non troppo pi semplice da sintetizzare che un sommatore a 32 bit). Farlo pi grande della
met del numero di bit non serve, perch la parte pi grande del circuito fa il passo.

2.4.3 Incrementatore
Un incrementatore un circuito combinatorio che somma
Cin (che vale 0 o 1) ad un numero dato. Possiamo pensare
che tale incremento sia un caso particolare di somma con
riporto tra due addendi ad n cifre, in cui uno dei due
addendi nullo. Pertanto, lo possiamo realizzare scomponendo il tutto in n moduli full adder. Per questi moduli
hanno un ingresso (yi) che sempre nullo. Quindi posso
semplificarli.
Questo un circuito pi semplice del full adder (ad un solo livello di logica).
25

Appunti sullAritmetica dei Calcolatori Giovanni Stea


Richiamo sullassembler: ADD $1, %AL ed INC %AL, pur se ottengono lo stesso risultato, sono
istruzioni diverse. In particolare, la seconda potrebbe essere pi veloce della prima (era cos quando i calcolatori erano pi lenti).

2.4.4 Esercizio (da fare a casa)


Descrivere un incrementatore in base 7 in codifica 4-2-1. Chiamare z2, z1, z0 le variabili che supportano la cifra in uscita e cin e cout i riporti entranti ed uscente.
Tracciare la mappa di Karnaugh della variabile /z2 (si noti di /z2) e:
-

individuare e classificare gli implicanti principali

trovare tutte le liste di copertura irridondanti

scegliere la lista di costo minimo secondo il criterio a diodi

controllare se la sintesi cos ottenuta soggetta ad alee, ed eventualmente classificarle e rimuoverle

Effettuare infine la sintesi a porte NOR di z2 (si noti: di z2).


NB: Al fine di rendere standard il layout delle mappe di Karnaugh, semplificando cos la correzione
dellesercizio, si utilizzi cin come la variabile di ingresso di ordine maggiore.

Soluzione

2.4.5 Esercizio (da fare a casa)


1) Descrivere il circuito lookahead di un sommatore per addendi a 2 bit.
2) Detto il tempo di attraversamento di un livello di logica (supposto costante ed identico per
tutte le porte), calcolare il tempo di risposta di un sommatore per addendi a N= 2n bit, che utilizzi il circuito lookahead di cui al punto 1.
3) sintetizzare il circuito a costo minimo in forma SP.

Soluzione

2.4.6 Esercizio (da fare a casa)


Sia data una rete combinatoria che: i) riceve in ingresso tre variabili x2, x1, x0 che esprimono un
numero naturale X ad una cifra in base 5 (in codifica 421) ed una variabile di comando b, e ii)

26

Appunti sullAritmetica dei Calcolatori Giovanni Stea


produce in uscita tre variabili y2, y1, y0 che esprimono un numero naturale Y ad una cifra in base 5
ed una variabile c secondo la seguente legge.
Il numero naturale Y legato al numero naturale X dalla relazione
2 X 5
Y =
X + 1 5

b=0
b =1

La variabile c vale 1 se il risultato delloperazione scritta tra i non rappresentabile su una cifra in
base 5 e 0 altrimenti.

1) Descrivere la rete nella sua completezza riempiendo le seguenti mappe


x1 x0
b x2

c
00

01

11

10

x1 x0
b x2

00

00

01

01

11

11

10

10

y2 y1 y0
00

01

11

10

2) Sintetizzare la sottorete che genera y0 a costo minimo sia a porte NAND sia a porte NOR
3) Calcolare il costo delle due realizzazioni (sia a porte che a diodi), e specificare quale delle due
sia di costo minore.

Soluzione

2.5 Sottrazione
Riprendere la differenza in base 10. Algoritmo imparato alle elementari.

27

= 10 . Lalgoritmo consiste in:


-

sottrarre le cifre di pari posizione singolarmente, partendo dalle meno significative

se la differenza di due cifre non rappresentabile con


una sola cifra, usare il prestito (borrow) per la coppia
di cifre successive

Il prestito vale sempre 0 o 1. Per la prima coppia di cifre (quelle meno significative), possiamo assumerlo
nullo.

Questo algoritmo non dipende dalla base di rappresentazione, ma soltanto dal fatto che usiamo
una notazione posizionale. Pu pertanto essere usato per sottrarre numeri in base qualunque.
Dati X , Y naturali in base su n cifre, quindi 0 X , Y n 1 , e dato bin , 0 bin 1 , voglio
calcolare il numero naturale Z = X Y bin .
Tanto per cominciare, n X Y bin n 1 . Quindi, Z pu anche non essere un numero
naturale, cosa che sappiamo bene dallaritmetica (i naturali non sono un insieme chiuso rispetto
alla sottrazione). Comunque, X Y bin diviso per n d quoziente al minimo -1. Pertanto definisco:
X Y bin
bout =
, D = X Y bin
n

ed ottengo che bout {0,1} , ancora una volta indipendentemente dalla base. Quindi, posso scrivere
Z = bout n + D = X Y bin

Quindi: la differenza di due numeri naturali espressi in base su n cifre, meno un eventuale
prestito entrante, produce un numero che, se naturale, sempre rappresentabile su n cifre in
base . Pu inoltre produrre un numero non naturale, nel qual caso c un prestito uscente.
In ogni caso il prestito uscente pu valere soltanto zero o uno.

Per eseguire la differenza di due numeri, faccio quanto segue:


osservo che Y + Y = n 1 (definizione di complemento). Dal che derivo che Y = Y n + 1 .
Sostituendo questultima nellespressione riquadrata sopra, si ottiene:

(1 bout ) n + D = X + Y + (1 bin )
Come si interpreta questa equazione? Dicendo che:

Appunti sullAritmetica dei Calcolatori Giovanni Stea


- la differenza di X ed Y, meno un eventuale prestito entrante, qualora essa sia un numero naturale, pu essere ottenuta se sommo X ed Y complementato, pi un eventuale riporto entrante,
ottenuto complementando il prestito entrante.
- Se il riporto uscente di detta somma pari ad 1, la differenza un numero naturale, ed il prestito uscente, ottenuto complementando il riporto uscente della somma, zero.
- Se il riporto uscente di detta somma pari a 0, la differenza non un numero naturale, ed il
prestito uscente, ottenuto complementando il riporto uscente della somma, uno.
Quindi, posso realizzare la differenza di due numeri con un circuito fatto cos:
X

+
bout

+
bin

bout

bin

n
D

n
D

Con tutto quel che ne consegue, incluso:


-

la possibilit di scomporre il tutto in blocchi pi semplici (fino ad una cifra), in quanto sia il
complemento che la somma possono essere scomposti fino ad una cifra,

la possibilit di usare full adder con lookahead,

la possibilit di tirar fuori un circuito di decremento semplificato, etc.

2.5.1 Comparazione di numeri naturali


I sottrattori vengono usati spesso come comparatori. Dati due numeri naturali A e B, se voglio
sapere se A < B , basta che sottragga A B e guardi il prestito uscente. Se bout = 1 , allora A pi
piccolo. Inoltre, se voglio testare se due numeri sono uguali, posso comunque prendere luscita del
sottrattore e passarla ad una porta NOR ad un opportuno numero di ingressi. In questultimo caso,
per, conviene fare lo XOR cifra per cifra e poi passare tutto ad un NOR.

2.5.2 Sommatore/sottrattore in base 2


La stretta parentela tra sommatore e sottrattore pu essere sfruttata per realizzare ununit multifunzionale che realizzi entrambe le operazioni. Ununit, cio, che a seconda del valore di una
variabile di comando esegue la somma o la sottrazione (con riporto/prestito) tra due numeri.
29

Appunti sullAritmetica dei Calcolatori Giovanni Stea

Per il circuito sopra disegnato, se cmd=0 le porte XOR sono elementi neutri. Se cmd=1 fungono
invece da invertitori. Pertanto, se cmd=1 questo circuito esegue una sottrazione.

2.6 Moltiplicazione
Anche in questo caso ripartiamo dallalgoritmo imparato alle elementari, detto di shift e somma.
-

Si moltiplica uno dei due fattori per tutte le cifre dellaltro,


in step successivi.

I risultati di ciascuno di questi prodotti parziali vengono


scritti a partire dal posto occupato dalla cifra per la quale si sta moltiplicando

I risultati di ciascun prodotto parziale sono sommati (con


riporto) per ottenere il prodotto.

Possiamo inoltre osservare che:


-

la cifra di posto i del prodotto, 0 i n 1 , determinata unicamente dai prodotti parziali


relativi alle cifre j i . Cio: alla fine del i-simo prodotto parziale posso gi stabilire, tramite una semplice somma, il valore della i-sima cifra del prodotto.

Come al solito, lalgoritmo e le propriet sopra menzionate valgono indipendentemente dalla base
in cui si lavora. Vediamo di impostare il problema in modo formale, e di sintetizzare la rete logica
che lo risolve. Dati:
- X , C numeri naturali in base su n cifre, tali quindi che 0 X n 1, 0 C n 1
- Y numero naturale in base su m cifre, tali quindi che 0 Y m 1
30

Appunti sullAritmetica dei Calcolatori Giovanni Stea


Voglio calcolare:

P = X Y + C .
(Ormai chiaro il perch introduco un termine in pi nelloperazione: cos come una somma
(sottrazione) con riporto (prestito) entrante su n cifre pu facilmente essere scomposta in somme
(sottrazioni) su un numero minore di cifre, allo stesso modo introdurre il termine C a sommare mi
servir per scomporre un prodotto in pi prodotti pi semplici).
Osserviamo che, dalle due ipotesi sopra menzionate, discende che:
P = X Y + C ( n 1) ( m 1) + ( n 1) = m ( n 1) < n + m 1

Il che implica che il prodotto rappresentabile su n+m cifre.


Ci detto, possiamo disegnare lo schema della rete che svolge loperazione appena vista:

La rete sopra disegnata si chiama moltiplicatore con addizionatore per naturali. Vediamo come
si realizza in termini di reti pi semplici. Usiamo la consueta tecnica di scomposizione del problema.
1) Si scompone Y (attenzione, soltanto Y, non X) in due blocchi: Y = Yh l + Yl , con Yh , Yl rispettivamente quoziente e resto della divisione per l .
2) Posso allora scrivere:

P = ( X Yl + C ) + X Yh l = Pl + X Yh l
Il primo termine un prodotto su n per l cifre, che posso svolgere con un circuito analogo
a quello disegnato sopra, ma pi semplice (con un numero inferiore di ingressi).
3) Il risultato di questo primo prodotto sar un numero che posso scomporre (a costo nullo) in
quoziente e resto della divisione per l .

31

Appunti sullAritmetica dei Calcolatori Giovanni Stea

. P = Pl

P
+ ll l + X Yh l = Pl

+ ll + X Yh l

4) Ma adesso, il secondo termine un numero su n cifre, e quindi lultimo termine tra parentesi
quello che produce in uscita un moltiplicatore con addizionatore a n per (m-l) cifre.
5) Posso sommare i due prodotti parziali cos ottenuti per formare il prodotto finale. Attenzione, per, ch la somma fatta su intervalli di cifre disgiunti. Lultimo addendo, infatti, ha

l a moltiplicare, e quindi ha le ultime l cifre nulle. Il primo addendo, invece su l cifre.


Quindi, non si tratta di somma ma di concatenamento dei due prodotti parziali.
In sostanza, ho calcolato P, prodotto di n per m cifre, utilizzando
-

un moltiplicatore con addizionatore a n per l cifre

un moltiplicatore con addizionatore a n per m-l cifre

concatenamenti, scomposizioni, quozienti e moltiplicazioni per potenze della base (costo nullo)

Ovviamente, quello che faccio per via algebrica lo posso fare anche per via circuitale:

Posso iterare questa scomposizione tante volte quante sono le cifre di Y. Quindi, posso realizzare
la moltiplicazione utilizzando soltanto moltiplicatori (con addizionatore) ad n per una cifra.

2.6.1 Moltiplicatore con addizionatore nx1 in base 2


Vediamo come si costruiscono i moltiplicatori ad n per una cifra in base 2.
32

Il risultato che deve uscire da qui :

C
Pi = yi X + C =
X + C

yi = 0
yi = 1

Quindi la sintesi di questo circuito particolarmente semplice: un circuito che, sulla base del
valore di yi, deve sommare a C o X oppure zero.
Il multiplexer a sinistra, in realt, rappresenta
n multiplexer 2 to 1 in parallelo, ciascuno dei
quali relativo alla coppia corrispondente di
bit. Vediamo pi in dettaglio come fatto
ciascuno di questi multiplexer.

Yi
E una rete che fa passare o 0 o un
ingresso, a seconda che Yi sia 0 o 1.
Quindi banalmente una porta AND

una semplice barriera di porte AND.

2.6.2 Algoritmi per il calcolo iterativo del prodotto


Il prodotto di due numeri si presta, come abbiamo gi intravisto, ad essere calcolato in maniera
iterativa.
-

Si possono scrivere sottoprogrammi assembler che eseguono questo compito

Si possono dare implementazioni microprogrammate di reti che svolgono questo compito

Esistono due diversi algoritmi che calcolano il prodotto in modo iterativo:

Appunti sullAritmetica dei Calcolatori Giovanni Stea


Algoritmo di shift e somma
Voglio calcolare:

P = X Y + C .
- X , C numeri naturali in base su n cifre, tali quindi che 0 X , C n 1
- Y numero naturale in base su m cifre, tali quindi che 0 Y m 1
Pongo:
Questa la formalizzazione dellalgoritmo che usiamo

P0 = C
Pi +1 = yi i X + Pi

di solito per fare la moltiplicazione a mano

In questo modo, si dimostra banalmente che si ottiene Pm = P . Infatti


Pm = ym 1 m 1 X + ... + y0 0 X + C
m 1

= X yi i + C = X Y + C
i=0

un sottoprogramma assembler che realizzi questa moltiplicazione ragionevolmente semplice

una rete sequenziale che realizzi questa operazione piuttosto complessa (poi forse vedremo
come si fa).

Algoritmo di somma e shift


Sempre nelle stesse ipotesi, definisco
Pi ' m i Pi

Quindi, P0 ' = C m , e Pm' = m m Pm = Pm , cio lalgoritmo d lo stesso risultato dopo m passi.


Moltiplicando entrambi i membri della relazione di ricorrenza dellalgoritmo precedente per m i ,
ottengo:

Pi +1 m i = yi i X m i + Pi m i
Pi +1 ' = yi m X + Pi '
yi m X + Pi '
Pi +1 ' =

Lalgoritmo di somma e shift pertanto il seguente:


P0 ' = C m
y m X + Pi '
Pi +1 ' = i

un sottoprogramma assembler che realizzi questa moltiplicazione ragionevolmente semplice

una rete sequenziale che realizzi questa operazione meno complessa della precedente. Infatti,
nella prima versione (shift e somma) richiesto ad ogni passo una moltiplicazione per i , cio

34

Appunti sullAritmetica dei Calcolatori Giovanni Stea


uno shift di un numero di posizioni variabile. Nel secondo caso, richiesta una moltiplicazione per m , cio uno shift di un numero di posizioni fisso.

2.6.3 Esercizio
Sintetizzare una rete combinatoria che, ricevendo in ingresso un numero naturale in base 10 a due
cifre, generi in uscita il corrispondente numero binario su ? bit. Si supponga che le due cifre decimali siano codificate 8421 (BCD).

Devo realizzare un circuito fatto in questo modo

Su quante cifre sta il risultato? Visto che z 99 , bastano 7 bit. Le due cifre di ingresso sono x1 e x0,
e sono codificate BCD. Pertanto la loro rappresentazione (come singole cifre) coerente con la
rappresentazione di un numero naturale in base 2 a 4 cifre. Quindi, il risultato da calcolare :
Y = 10 x1 + x0
Ma un circuito che faccia questa operazione lo so sintetizzare:

Volendo, esiste un modo pi furbo per fare la stessa cosa. Basta osservare che:
Y = 10 x1 + x0 = 8 x1 + 2 x1 + x0
Allora si tratta di fare 2 somme pi due shift, che sono a costo nullo.

35

x0

x1
0

1) calcolo 2 x1 + x0 . Devo dimensionare correttamente luscita, che vale al massimo

2 9 + 9 = 27 . Mi servono 5 bit in uscita.

2) Dimensiono lingresso su 5 bit di conseguen-

+
0

3) Calcolo adesso 8x1 + ( 2 x1 + x0 ) , che sta su 7

x1
0

za

bit perch minore di 99. Devo dimensionare


gli ingressi opportunamente .

+
0

Si tenga presente che il n. di bit in ingresso ad un


addizionatore deve essere identico su entrambi

gli ingressi. Altrimenti errore (grave).


In questo modo servono 2 full adder (a 7 e 5 bit), mentre nella realizzazione con moltiplicatore ne
sarebbero serviti 4 (a 4 bit), senza contare le porte AND aggiuntive. Il tempo di risposta di questo
circuito certamente minore di quello del precedente.

2.7 Divisione
Dati:
- X numero naturale in base su n+m cifre (dividendo), tale che 0 X m + n 1
- Y numero naturale in base su m cifre (divisore), tale che 0 Y m 1
Voglio calcolare i due numeri Q ed R tali che:
X = Q Y + R .

Q ed R sono il quoziente ed il resto, e sono unici per il teorema del resto. Su quante cifre saremo
in grado di rappresentare Q ed R?
-

Il resto, dovendo essere minore del divisore, sta sicuramente su m cifre.

Per il quoziente non posso dire molto. Infatti, se Y=1, allora Q=X, e quindi alla peggio sta
su n+m cifre.

Voglio rappresentare il quoziente su n cifre. Assumere che Q stia su n cifre implica che:
X = Q Y + R ( n 1) Y + (Y 1) = n Y 1

Quindi, lipotesi aggiuntiva che mi garantisce che il quoziente stia su n cifre : X < n Y .

Appunti sullAritmetica dei Calcolatori Giovanni Stea


Sotto questipotesi non poso fare tutte le divisioni, ma soltanto alcune. Questipotesi restrittiva? Dipende. Se il numero delle cifre n, m non un dato del problema (cio non fissato a priori),
dati X ed Y posso sempre trovare n tale che quella disuguaglianza sia vera (il che vuol dire che
posso sempre fare la divisione, purch sia in grado di estendere la rappresentazione del dividendo
ed abbia un numero sufficiente di cifre per il quoziente). Il problema sussiste se il numero di cifre
n,m un dato del problema. Questo accade, ovviamente, quando si lavora su campi finiti, cio
sempre allinterno di un calcolatore.
Piccola divagazione sullAssembler:
La DIV ammette dividendo su 2n bit e divisore su n bit, con n=8,16,32, e richiede che il quoziente stia su n bit (altrimenti genera uninterruzione). Nello schema di sopra, quello che si otterrebbe ponendo n=m. Il dividendo selezionato implicitamente sulla base della lunghezza del divisore.
In questo caso, cura del programmatore assicurarsi che X < n Y , eventualmente estendendo
la rappresentazione del dividendo (e del divisore) su un numero maggiore (doppio) di bit. Cos
facendo X ed Y rimangono identici. Poter disporre di n=32 (divisione con dividendo a 64 bit e
divisore a 32 bit) significa poter garantire che quella disuguaglianza pu essere resa vera, eventualmente estendendo le rappresentazioni, per qualunque dividendo su 32 bit e qualunque divisore.
Qualora il dividendo non stia su 32 bit, non detto che la divisione si possa sempre fare, perch
non si possono estendere ulteriormente gli operandi.

Il modulo divisore deve testare la fattibilit della divisione con le ipotesi date. Se il quoziente non
sta su n cifre, deve settare una variabile logica no_div che dice che la divisione non fattibile.
Il rivelatore di fattibilit si fa con un comparatore ad n+m cifre (sottrattore), che ha in ingresso
X , n Y e ha come no _ div = bout . Dora in avanti non lo disegniamo per semplicit.
Posso realizzare il tutto con un circuito a 2 livelli di
logica (che non sono, per, in grado di sintetizzare
perch troppo complesso), o posso cercare di
scomporre il tutto in moduli pi semplici. La scomposizione in moduli pi semplici, come al solito, si
ottiene traducendo in forma circuitale lalgoritmo
che si usa per eseguire la divisione a mano.

37

Quando faccio le divisioni, invece di considerare tutto il


X

dividendo in un colpo solo:


Y

prendo il minimo numero necessario delle cifre pi


significative del dividendo in modo tale da ottenere un
numero compreso in [Y, Y [. Quante sono queste
cifre? m possono non bastare; m+1 cifre bastano
(purch, ovviamente, non abbia zeri in testa).

2
Q

Calcolo un quoziente e resto parziali della divisione


cos ottenuta. Sono certo che il quoziente sta su una

6
R

sola cifra (per lipotesi che ho fatto).


-

Calcolo un nuovo dividendo concatenando il resto


parziale cos ottenuto con la cifra pi significativa non
ancora utilizzata del dividendo. Ottengo nuovamente
un dividendo parziale certamente minore di Y , date le ipotesi.

Vado avanti fino ad esaurire le cifre del dividendo.

Il quoziente ottenuto dal concatenamento dei quozienti parziali (tutti su una cifra)

Il resto il resto dellultima divisione parziale.

Vediamo di scrivere la scomposizione della divisione in modo formale.

X = Xh l + Xl
Q = Qh l + Ql
Con X l , Ql su l cifre; X h su n+m-l cifre; Qh su n-l cifre, sotto lipotesi X < n Y .
Da X = Q Y + R ottengo:
X h l + X l = Qh l Y + Ql Y + R

Dividiamo entrambi i membri per l (togliamo, cio, le l cifre meno significative):


Q Y + R
X h = Qh Y + l l
= Qh Y + R '

Posso quindi ottenere Qh dalla divisione di X h per Y. Ottengo anche un resto R' .
Per andare avanti, sostituisco ad X h lespressione trovata

Appunti sullAritmetica dei Calcolatori Giovanni Stea

( Q Y + R )
'

+ X l = Qh l Y + Ql Y + R

R ' l + X l = Ql Y + R
Questultima operazione consiste nel
-

prendere il resto della precedente divisione, shiftarlo a


sinistra di l cifre e concatenarlo con il resto del dividendo

eseguire una nuova divisione, dalla quale ottengo:


o le l cifre meno significative del quoziente
o il resto della divisione.

In termini circuitali:

Che voglio scomporre in moduli pi semplici, secondo il procedimento appena visto.

39

Appunti sullAritmetica dei Calcolatori Giovanni Stea

Spingendo al massimo la scomposizione, per eseguire una divisione di un dividendo su n+m cifre
per un divisore su m cifre, basta:
-

saper eseguire una divisione base di un dividendo su 1+m cifre per un divisore su m cifre

scomporre e concatenare numeri.

Ricapitolando: per eseguire la divisione di un numero su m+n cifre per un numero su m cifre, uso
n divisori elementari in cascata. Ciascuno di questi divisori divide un numero su m+1 cifre per un
numero su m cifre. Sotto lipotesi che X < n Y , ciascuno di questi divisori produce un quoziente
che sta su una sola cifra, e quindi il quoziente finale lo ottengo come giustapposizione dei quozienti parziali. Tale ipotesi ( X < n Y ) equivalente a dire che le m cifre pi significative del dividendo rappresentano un numero pi piccolo del divisore.

2.7.1 Divisore elementare in base 2


Vediamo di sintetizzare lunit in base 2 che esegue una divisione di un dividendo a m+1 cifre per
un divisore ad m cifre, sotto lipotesi che X < 2Y .
Tale unit produce
-

quoziente su una cifra

resto su m cifre

Quindi, il quoziente pu valere 0 o 1. Vale 0 se il divisore maggiore del dividendo, ed 1 altrimenti.


40

Appunti sullAritmetica dei Calcolatori Giovanni Stea


Il resto, invece, uguale al dividendo se questo minore del divisore. Altrimenti uguale al
dividendo meno il divisore.
X <Y
0 X < Y
X
Q=
, R=
1 X Y
X Y X Y
Quindi, tutto quello che mi serve di saper fare :
-

stabilire se il dividendo sia o meno minore del divisore

eventualmente, fare una sottrazione.

Ma per stabilire se X sia minore di Y, basta che li sottragga e controlli leventuale prestito uscente.

Da dove si vede, in questo circuito, che necessaria lipotesi che X < 2Y ? lipotesi che mi garantisce la riducibilit del numero X (o della differenza) su m cifre. Infatti
-

se X < Y , allora X sta su m cifre come Y ed il resto;

se X Y , allora X-Y il resto se e solo se X < 2Y

2.7.2 Esercizio (da fare a casa)


Sintetizzare una rete combinatoria con quattro uscite z2 , z3 , z5 , z10 (ed un opportuno numero di ingressi da dettagliare), che prende in ingresso un numero naturale N a 5 cifre in base 10, codificato BCD.
Luscita zk deve valere 1 solo quando N divisibile per k.
Per i criteri di divisibilit si faccia riferimento alle dimostrazioni oggetto di un precedente esercizio.

Soluzione
41

Appunti sullAritmetica dei Calcolatori Giovanni Stea

2.7.3 Esercizio svolto


Sia dato X numero naturale rappresentato su n cifre in base 2. Senza far uso di moltiplicatori e
divisori, progettare una rete combinatoria che riceve in ingresso X e produce in uscita la rappresentazione del numero naturale Y = 7 8 X in base 2 su ? cifre.

Su quante cifre potr rappresentare il risultato? Sicuramente su n, in quanto minore di X. Ne


potrei usare meno se, ad esempio, il massimo numero naturale che posso ottenere in uscita fosse
sempre rappresentabile su n-1 cifre. Il massimo numero naturale z che posso ottenere sicuramente maggiore di:
z>

7 n
7
2 1) 1 (in quanto 2 n 1 di sicuro non multiplo di 8, e quindi ( 2 n 1) non intero).
(
8
8

E si vede abbastanza velocemente che:


7 n
2 1) 1 2n 1 , almeno a partire da n=3. Quindi, esiste almeno un ingresso per il quale luscita
(
8
non rappresentabile su n-1 bit. Ne devo usare n.
Per ottenere il risultato, basta osservare che, se devo calcolare Y = 7 8 X , o meglio ancora

Y = 7 8 X , posso scrivere: Y = ( 8 X X ) 8 . Nellordine:


-

moltiplicare X per una potenza della base (8=23) unoperazione che so fare, ed a costo
nullo.

sottrarre due numeri naturali unoperazione che so fare

calcolare il quoziente della divisione di un naturale per una potenza della base
unoperazione che so fare, ed a costo nullo.

Quindi:

42

Attenzione: Qualcuno potrebbe aver pensato la


seguente cosa: prima calcolo X 8 e poi lo
sottraggo ad X, ottenendo il risultato corretto.
Oltretutto, cos facendo, la differenza su n
cifre, invece che su n+3. Il risultato che si
ottiene, per, sbagliato. Infatti, in questo
modo sto calcolando
X 7X
X

8 8

I due numeri sono uguali soltanto quando X

multiplo di 8. Infatti:
- X=16: entrambi i lati fanno 14.
- X=13: il lato sx fa 12, il lato destro fa 11.

Vediamo ora di risolvere il medesimo esercizio

partendo dalla realizzazione con moltiplicatore,


n

anche se il testo lo vietava. Dobbiamo usare un


moltiplicatore ad n per 3 cifre in base 2, e dise-

MUL

gnare il circuito accanto.


Si pu sostituire a questo circuito la sua implementazione in termini di full adder, e, con le
opportune semplificazioni, sintetizzare un circuito che fa la stessa cosa di quello precedente.

n+3

Appunti sullAritmetica dei Calcolatori Giovanni Stea

1) si scompone il moltiplicatore su 3 cifre, osservando che la rappresentazione di 7 111.

Le ultime 3 cifre vengono


eliminate dalla divisione per 8

44

2) Si osserva che ciascun moltiplicatore per 1

pu essere sostituito con un full adder, visto

che la cifra a moltiplicare sempre uno, e


quindi le porte AND sono corto circuiti.
n+1

X
n

In questo modo, riusciamo a fare la sintesi

con due full adder ad n bit. Nellaltro caso, ci

vuole un solo full adder, ma ad n+3 bit.

Quindi, questa implementazione costa di pi


n

della precedente se n maggiore di 3.


Si osservi che questa implementazione calcola
il risultato come: Y = ( X + 2 X + 4 X ) 8 .

n+1

X
n

0
n

n+1

Appunti sullAritmetica dei Calcolatori Giovanni Stea

3 Rappresentazione dei numeri interi


Poniamoci adesso il problema della rappresentazione dei numeri interi, quelli che siamo abituati a
scrivere con un simbolo, detto segno, ed un numero naturale, detto modulo. Servono perch
linsieme dei numeri naturali non chiuso rispetto alla sottrazione.
In realt, allinterno dei calcolatori non conviene usare questo stile di rappresentazione: non conviene rappresentare i numeri come modulo e segno (1 bit), perch questo renderebbe le reti che
operano sulle cifre pi complesse. Bisogner adottare una rappresentazione non intuitiva, detta
rappresentazione in complemento alla radice.
Supponiamo di avere a disposizione sequenze di n cifre in base , quindi la possibilit di rappresentare n combinazioni diverse. Conosco una legge (biunivoca) che mi permette di associare a
ciascuna di queste combinazioni un numero naturale, cio:
n 1

A = ai i
i=0

n 1

A = ai i
i =0

Preso un insieme di n numeri interi, posso sempre trovare una legge biunivoca che gli fa corrispondere un insieme di n numeri naturali.

n 1

A = ai i
i =0

46

Appunti sullAritmetica dei Calcolatori Giovanni Stea


Procedo come segue:
-

stabilisco innanzitutto di lavorare su campi finiti, cio avendo a disposizione un numero limitato di cifre in base , noto a priori.

so rappresentare i numeri naturali in base su n cifre

posso associare ad ogni elemento di un insieme di numeri interi un elemento di un insieme


di numeri naturali

Quindi posso associare un insieme di n cifre in base ad un numero intero. Questa sar la
rappresentazione del numero naturale che gli faccio corrispondere. Parlo in senso lato di
rappresentazione di un numero intero.

Definisco una legge L (

da Z , tale per cui, detto:

A un numero naturale (li scrivo maiuscoli dora in avanti)

a un numero intero (li scrivo minuscoli dora in avanti)

A = L ( a ) , a = L1 ( A)
Posso scrivere:
L

a A ( an 1an 2 ...a1a0 )

A dire che quella a destra la rappresentazione del numero intero a su n cifre in base .

Esempio

= 3, n = 2 . Ho a disposizione un totale di 9 combinazioni di cifre.


L()

-4

-3

-2

-1

00

01

02

10

11

12

20

21

22

(a1a0)3

L-1()

Stabilisco una legge (arbitraria) che mi fa corrispondere ad ogni numero intero dellinsieme che ho
scelto un numero naturale, del quale so dare rappresentazione in base su n cifre. Posso dire che

1 (12 )3 secondo la legge che ho scelto.


chiaro che la domanda: di cosa la rappresentazione la sequenza di cifre (12 )3 , del numero
naturale 5 o del numero intero 1? una domanda priva di senso. come chiedere: il contenuto di
AL un numero naturale o un carattere in ASCII? La risposta che sono bit, e cosa ho codificato
47

Appunti sullAritmetica dei Calcolatori Giovanni Stea


in termini di quei bit un pensiero contenuto nella mia testa, non nei bit stessi. Allo stesso modo, il
fatto che quelle due cifre codifichino un intero o un naturale sta nella mia testa. Se ho stabilito che
sto lavorando sui numeri naturali, sar 5. Se ho stabilito che sto lavorando su numeri interi secondo quella legge L() - sar 1. Quindi, ci che discrimina lun caso dallaltro, consentendomi di dare
la risposta corretta, linterpretazione che la mia testa assegna ad una sequenza di cifre.

Nota: Perch sto facendo tutti questi conti? Per non usare un simbolo in pi? Pi che altro, perch
se la legge di corrispondenza la scelgo in maniera furba, posso ottenere dei vantaggi implementativi. Conosco infatti la maniera di realizzare reti che svolgono operazioni sui numeri naturali. Vedremo poi che, a seconda di come scelgo la corrispondenza tra interi e naturali (cio la legge L() ),
posso riciclare gran parte di ci che so fare per lavorare con gli interi. Posso cio realizzare dei
circuiti che producono risultati corretti sia interpretando le cifre come rappresentazioni di naturali,
sia interpretandole come rappresentazioni di interi.

Mettiamo qualche paletto in pi sulla legge L:


Linsieme di numeri interi che voglio rappresentare (il dominio di L, cio) dovr esser necessariamente:
-

contiguo (privo di buchi). Dovr quindi essere un intervallo.

Dovr essere il pi simmetrico possibile rispetto allo zero.

Questo perch avere un intervallo non simmetrico limita la possibilit di eseguire operazioni (ad
esempio, calcolare lopposto di un numero). Ci pone dei vincoli su come scelgo il dominio della
legge L (

) . Dato che, operando su n cifre, ho a disposizione

n possibilit, logica vorrebbe che lo

zero dividesse lintervallo in due parti identiche.

n

2

n

2

Per 2J+1 numeri sono un numero dispari di numeri, che pu essere messo in corrispondenza
biunivoca con un insieme di n numeri soltanto se dispari, il che accade raramente (noi
lavoriamo sempre con pari a 2, 8, 10, 16).
Nel caso in cui sia pari, dovremo accettare di rappresentare un numero positivo o negativo in
pi. La scelta che opereremo sar di rappresentare sempre lintervallo di interi
n n
, 1
2 2

48

Appunti sullAritmetica dei Calcolatori Giovanni Stea


che, nel caso di base pari, corrisponde ad avere un numero negativo in pi.
Dora in avanti, per semplicit di scrittura, faremo sempre lipotesi che sia pari. Ci consente
di non portarsi dietro , quando si fanno divisioni per due. La teoria esposta immediatamente generalizzabile al caso di base dispari.

3.1 Possibili leggi di rappresentazione dei numeri interi


Ho appena definito il dominio della funzione L (

) . Il codominio lo abbiamo individuato implici-

tamente, ed lintervallo di numeri naturali rappresentabili su n cifre in base , cio:

n n
L :
,
1 0, n 1
2 2

Resta sempre aperta la scelta di come definire la legge L (

) . In teoria ho un numero molto elevato

di possibilit. Cerco quindi di sfruttare questa libert per fare le cose nel modo pi semplice possibile. Vediamo alcune leggi usati nella pratica.

Traslazione
L: A= a+

n
2

. n 2 detto fattore di polarizzazione.

Es: = 2, n = 8

a
A

128
0

127
1

1
127

0
128

1
129

126
254

127
255

rapp. 00000000 00000001 01111111 10000000 10000001 11111110 11111111


In questo caso, lo zero sar rappresentato come il numero naturale 128, cio 10000000 . Anche
nellesempio visto prima avevamo usato la stessa legge (pur senza averla definita). Ha il pregio di
essere monotona: a < b A < B , con il che dal confronto delle rappresentazioni si ricava un
confronto tra i numeri. Viene usata: a) allinterno dei convertitori A/D e D/A, e b) nel rappresentare
lesponente dei numeri reali1.

In questultimo caso si possono avere rappresentazioni in traslazione con fattori di polarizzazione diversi da

(di poco, in genere: al massimo

n 2

n 2 1 ).
49

Appunti sullAritmetica dei Calcolatori Giovanni Stea


Complemento alla radice

n
0a<
a
2
L: A=
n
n + a a < 0

2
Es: = 2, n = 8

a
A

128
128

127
129

1
255

0
0

1
1

126
126

127
127

rapp. 10000000 10000001 11111111 00000000 00000001 01111110 01111111

Questo disegno ci aiuta a ricordare come


A

fatta la rappresentazione in complemento alla

n 1

radice.

n 2
n 2 1

n 2

n 2 1

Questa la legge usata allinterno dei calcolatori, ed quella su cui ci focalizzeremo dora in avanti.

Modulo e segno
Tramite questa legge si fa corrispondere ad un numero intero non gi un numero naturale, ma una
coppia costituita da un numero naturale (modulo) e da una variabile logica (segno).

( s, M ) a
0 a 0
s=
, M = abs ( a ) .
1 a < 0
Questo tipo di rappresentazione non ricade nella trattazione scritta prima. Infatti, non si mette in
corrispondenza un intervallo di interi con un intervallo di naturali.

3.2 Propriet del complemento alla radice


Il complemento alla radice gode di alcune interessanti propriet, che saranno usate massicciamente
nel seguito.
50

Appunti sullAritmetica dei Calcolatori Giovanni Stea


a A ( an 1an 2 ...a1a0 )

Determinazione del segno: posso determinare il segno di un numero semplicemente guardandone


la rappresentazione. Dalla figura in alto si vede bene che:
a0

0 A<

a<0

n
2

A< n

Infatti, il pi grande numero a rappresentabile n 2 1 .


Qual la rappresentazione di questo numero su n cifre? abbastanza facile scoprirlo se si pensa
che il numero precedente al numero naturale n 2 . La rappresentazione di n 2 facile,
perch n 2 = n 1 2 , e quindi n 2 ( 2 00...0 ) . Per trovare la rappresentazione di

n 2 1 basta fare una banale sottrazione:


1

...

...

...

2 1 1 ... 1 1

Quindi:

n 2 1 ( ( 2 1)( 1)( 1) ... ( 1) )


Esempio:

= 10, n = 4 n 2 1 ( 4999 )10

= 10 4 2 1

= 2, n = 8 n 2 1 ( 01111111)2

= 28 2 1

Per capire se la rappresentazione un numero naturale maggiore o minore di n 2 basta guardare la cifra pi significativa della rappresentazione. Infatti:
an 1

an 1

0 A<

n
2

A< n

In base 2, il tutto ovviamente pi semplice:


a0

an 1 = 0

a<0

an 1 = 1

Legge inversa
Si ottiene banalmente per sostituzione:
51

Appunti sullAritmetica dei Calcolatori Giovanni Stea

n
0a<
a
A
2
1
L: A=

L
:
a
=

n
n + a a < 0
A n

0 A<

n
2

A< n

Ma, per quanto appena detto, posso


-

semplificare le condizioni a destra, che possono essere scritte guardando la cifra + significativa
di A

sostituire A n con qualcosa di pi semplice, facendo leva sulla definizione di complemento

A
1
L : a=
A + 1

an 1 <
an 1

Esempio:

= 10, n = 3
A ( 852 )10 . Visto che la cifra pi significativa maggiore di 2 1 = 4 , il numero rappresentato negativo. Quindi, per trovarlo devo calcolare A (147 )10 , sommargli uno e cambiare il segno: a = 148

A ( 500 )10 . a = ( 499 + 1) = 500

= 2, n = 4
A (1011)2 . Visto che la cifra pi significativa 1, il numero negativo. Quindi:
a = ( 0100 + 1) 2 = (101) 2 = 5
A (1111) 2 . Visto che la cifra pi significativa 1, il numero negativo. Quindi:
a = ( 0000 + 1)2 = (1) 2 = 1

Forma alternativa per L


Posso scrivere la legge L in un modo alternativo

n
a
0

a
<

2
L: A=

n
n + a a < 0

A = a n

se

n
2

a<

n
2

52

Appunti sullAritmetica dei Calcolatori Giovanni Stea


Infatti, se a un numero positivo, allora anche minore di n , e quindi a = a n . Se invece un
numero negativo, allora compreso in n 2, 0 , e quindi se lo divido per n ottengo quoziente
-1. Cio, a = n + a n , ma allora si ottiene ugualmente (ramo inferiore) A = a n .
q = 1
0
n
n
a = 1 + a n

q = 0

a = 0 + a n
n

Attenzione: quanto appena scritto vero solo se a rappresentabile su n cifre in base in complemento alla radice, cio se appartiene a n 2 , n 2 1 . E facile scordarselo, e questa cosa
fonte di errori gravi. In particolare, se a non appartiene allintervallo scritto sopra, a n esiste ed
un numero su n cifre in base (ovviamente), ma quel numero non ha niente a che vedere con la
rappresentazione di a in complemento alla radice (che invece non esiste su n cifre in base ).

3.2.1 Esercizio (da fare a casa)


Sia X la rappresentazione in complemento alla radice su n cifre in una base generica (pari) del
numero intero x. Sia Y la rappresentazione in traslazione dello stesso numero.
1) esprimere la relazione algebrica che consente di trovare Y in funzione di X;
2) sintetizzare a costo minimo il circuito che produce Y avendo X in ingresso nel caso = 6
(con codifica 421);
3) sintetizzare a costo minimo il circuito che produce Y avendo X in ingresso nel caso = 16
(con codifica 8421).

Soluzione

53

Appunti sullAritmetica dei Calcolatori Giovanni Stea

4 Operazioni su interi in complemento alla radice


Il motivo per cui abbiamo definito una legge di rappresentazione degli interi come numeri naturali
che vogliamo sintetizzare dei circuiti che lavorano sulle rappresentazioni, che cio sono in grado
di fornire il risultato corretto semplicemente lavorando sulle rappresentazioni dei numeri interi.

4.1 Valore assoluto


Vogliamo trovare il numero naturale B = ABS (a ) . Visto che a n 2, n 2 1 , otteniamo
che B 0, n 2 , cio che B rappresentabile su n cifre (attenzione: n-1 non bastano, neanche
se = 2 ).
Vogliamo quindi disegnare un circuito che, prendendo in ingresso A ( an 1 ,..., a0 ) produce in
uscita B ( bn 1 ,..., b0 ) , con A a e B = ABS (a ) .

a a0
ABS (a ) =
.
a a < 0
Conosco un modo semplice per stabilire il segno di a guardandone la rappresentazione A, ed un
modo semplice per calcolare a usando il complemento della sua rappresentazione (far riferimento alla legge inversa).
an 1 < 2
A
B = ABS (a ) =
A + 1 an 1 2
Esempi:

= 10, n = 3 :

A ( 852 )10 B = ABS ( a ) = 147 + 1 = 148

= 2, n = 4 :

A (1011)2 B = ABS ( a ) = (100 ) 2 + (1) 2 = 5

Dal punto di vista circuitale, il tutto si fa cos

54

Appunti sullAritmetica dei Calcolatori Giovanni Stea


Per sapere se devo far passare un
ingresso o laltro del multiplexer devo
confrontare la cifra pi significativa di
A con 2 . Un confronto lo posso
fare con una sottrazione, guardando
2

poi il valore del prestito uscente.

In base 2, il circuito di sopra si pu


semplificare nella sua parte a sinistra.
Inoltre, posso semplificarlo ulteriormente. Infatti, posso usare una barriera di
XOR guidate dalla cifra pi significativa di A per realizzare o meno il complemento del numero. Posso poi usare
un incrementatore che, sempre guidato
dalla cifra pi significativa di A, incrementa o lascia invariato il numero.

In realt il circuito a destra pu essere


ulteriormente ottimizzato, contando che
lultima XOR d sempre zero.

55

Appunti sullAritmetica dei Calcolatori Giovanni Stea

4.1.1 Circuito di conversione da CR a MS

Dal precedente schema si ricava immediatamente un circuito che converte la rappresentazione A in


complemento alla radice nella rappresentazione in modulo e segno dello stesso numero

Loperazione sempre fattibile, visto che lintervallo di rappresentabilit di un numero su n cifre in


MS contiene interamente quello su n cifre in complemento alla radice.

4.2 Cambiamento di segno


Dato A a , voglio trovare B b tale che b = a , con B su n cifre. unoperazione non sempre possibile. Infatti, visto che a n 2, n 2 1 , abbiamo a disposizione un intero negativo
in pi, che non ha un opposto nellintervallo. Il circuito che dobbiamo disegnare quindi fatto cos:

56

Appunti sullAritmetica dei Calcolatori Giovanni Stea

Con ow segnale di overflow, che deve essere messo ad 1 se loperazione non possibile, a 0 altrimenti. Per adesso, assumiamo che a n 2 inizialmente, poi verificheremo lipotesi.
In questo caso abbiamo:
(*) se a lestremo inferiore, la prima
disuguaglianza non vera.

(*)

B = a n
= 1 n a n
= A A

= n + 1 + A

= ( n 1) A

A = n 1 A

= A n
n

= 1+ A

Uso il complemento:

Il circuito in base 2 il seguente


Fare i seguenti esempi:
-

A=10000000
In questo caso il valore in uscita non corretto (si ottiene ancora B=10000000). Del resto, A n 2 , e quindi lopposto
non rappresentabile.

A=00000000
In questo caso si avrebbe un riporto in uscita dallINC.

Come si fa a vedere se c o meno overflow? Ci sono due modi:


-

controllare se A (10...00 ) , che richiede una AND a n ingressi.

guardare se A e B hanno entrambi segno negativo, cio se an 1 = bn 1 = 1 , perch questo il


solo caso che non torna. Si pu usare una AND a due ingressi.

Richiamo sullassembler: esiste unistruzione NEG, che interpreta una sequenza di bit come la
rappresentazione di un numero intero, e produce la rappresentazione dellopposto se questo esiste.
Altrimenti setta il flag di overflow OF. La parte di circuito che produce lingresso da dare al registro che contiene il flag di overflow labbiamo appena descritta.
57

Appunti sullAritmetica dei Calcolatori Giovanni Stea

4.3 Estensione di campo


Lestensione di campo loperazione con la quale si intende rappresentare un numero usando un
numero di cifre maggiore. Dato

a A ( an 1an 2 ...a1a0 ) , su n cifre, voglio trovare

a A EST ( an ' an 1 ' an 2 '...a1 ' a0 ' ) su n+1 cifre. Ovviamente, il problema ha sempre soluzione

perch lintervallo di rappresentabilit su n+1 cifre contiene quello su n cifre.

Ln+1 : AEST

<
a
0
a
A
an 1 <

2
1
=
, ed inoltre Ln : a =
n
n +1 + a a < 0
A + 1 = n + A a
n 1

Quindi:

AEST

A
an 1 <

=
( 1) n + A a
n 1

Quindi, ricavo immediatamente che:


ai ' = ai

an 1 < 2
0
0 i n 1 , an ' =
1 an 1 2

Cio, le n cifre meno significative sono identiche, la n+1-sima diversa a seconda che il numero
rappresentato sia positivo o negativo.
Quindi lestensione di campo dei numeri interi, a differenza di quella dei naturali, richiede in
generale della logica.
In base 2 il tutto molto pi semplice: an' = an 1

Richiamo sullassembler: esistono istruzioni CBW, CWD, CDQ, che interpretano una sequenza
di bit come la rappresentazione di un numero intero (su 8, 16, 32 bit), e producono la rappresentazione dello stesso numero estesa su 16, 32, 64 bit. Per contro, non esiste nessuna istruzione dedicata allo stesso scopo per i naturali: per i naturali lestensione si fa aggiungendo degli zeri in testa.
58

Appunti sullAritmetica dei Calcolatori Giovanni Stea

4.3.1 Esercizio (da fare a casa)


Descrivere il circuito di estensione di campo per numeri interi rappresentati in complemento alla
radice in base 10 in codifica 8421 (BCD). Sintetizzare il circuito sia a porte NOR che a porte
NAND a costo minimo, svolgendo il procedimento in maniera completa (cio classificando gli
implicanti, trovando tutte le liste di copertura irridondanti e scegliendo una di quelle a costo minimo). Individuare, classificare, ed eliminare eventuali alee in ciascuna sintesi.

Soluzione

4.4 Riduzione di campo


Affrontiamo adesso il problema inverso. Dato a A ( an an 1an 2 ...a1a0 ) , su n+1 cifre, voglio
trovare a ARID ( an 1 ' an 2 '...a1 ' a0 ' ) su n cifre.
Il problema ha soluzione soltanto se a n 2, n 2 1 n +1 2, n +1 2 1 .
Voglio per determinare ARID semplicemente guardando A . Non difficile (disegnare il diagramma cartesiano sottostante). Quando a nellintervallo nel quale a riducibile, A appartiene
ad uno dei due intervalli marcati sullasse delle ordinate. Uno va da 0 a A ' , che mi devo calcolare;
laltro va da A '' (che mi devo calcolare) a n +1 1 .
Vediamo quali sono le cifre di A quando a assume i valori estremi per cui loperazione si pu fare.
- a = n 2 1 A ' ( 0 ( 2 1)( 1)( 1) ... ( 1)( 1) ) ,
Quindi, quando devo rappresentare numeri positivi, una condizione per la riducibilit che:
an = 0 an 1 < 2
- a = n 2 A '' = n+1 n 2 = n ( 1) + n 2 , quindi A '' ( ( 1)( 2 ) 00...00 )
Sommo e sottraggo n

59

Appunti sullAritmetica dei Calcolatori Giovanni Stea

Ma in complemento alla radice, allinterno di


n+1 1

intervalli di numeri con lo stesso segno (i.e.,


solo positivi o solo negativi), la relazione tra
numero e rappresentazione monotona
crescente, a dire che a numero intero (negati-

n+1 2

vo) pi grande corrisponde numero naturale


pi grande. Quindi, una condizione per la
riducibilit che:

n +1
2

n +1
2

an = 1 an 1 2

Allora, la condizione per la riducibilit di un


numero intero lOR delle due condizioni.
Nel caso in cui il numero sia riducibile, la sua rappresentazione su n cifre data dalle n cifre meno
significative di A (ovvio, se si pensa che A = ( AEST )

RID

, e che nellestensione le n cifre meno signifi-

cative restano identiche). Quindi: A RID = A n .


A
n+1

n+1

ow

n-1

XOR

n-1

Ov
ow

ARID

In base 2, la condizione per la riducibilit di un


n

numero (importante) che le due cifre pi significative siano uguali. Il che significa che posso,
Il circuito che riconosce la non riducibilit

guardando luscita di una XOR a 2 ingressi, stabili-

si chiama circuito di overflow.

re che un numero non riducibile.

Testa se: ( an = 0 an1 < 2 ) ( an = 1 an 1 2 )

Se devo ridurre un numero da n+k a n cifre, posso


a) utilizzare k-1 XOR a due ingressi, e poi ottenere loverflow come OR delle uscite di questi

60

Appunti sullAritmetica dei Calcolatori Giovanni Stea


b) utilizzare una AND ed una OR a k ingressi, e controllare che le loro uscite siano identiche
usando una XOR a due ingressi (in genere si fa cos).

4.4.1 Esercizio (da fare a casa)


Descrivere un detettore di riducibilit per numeri interi a n cifre in base 4. Si assuma che luscita del
detettore valga 1 se il numero intero riducibile. Sintetizzare il circuito a porte NOR. Individuare le
liste di copertura di costo minimo. Individuare, classificare eliminare eventuali alee per tutte le liste
di copertura a costo minimo trovate.

Soluzione

4.5 Moltiplicazione/Divisione per potenza della base


Dato a A ( an 1an 2 ...a0 ) , voglio trovare B su n+1 cifre tale che b B e b = a . In realt
dovremmo prima chiederci se ci sta su n+1 cifre, ma la risposta ovvia. La soluzione B = A .
Infatti,

n
b = a
0a<

2
L: B =
, da cui la tesi.
n

n+1 + b = n+1 + a = n + a
(
) 2 a<0

Analogamente, dato a A ( an an 1an 2 ...a0 ) su n+1 cifre, voglio calcolare B b , con

b = a . La soluzione , ovviamente, B = A . Infatti


a n +1 n +1 + a n+1

a n+1
a

= a n +1 n +
B = =

n
n
n

A
A
= =
n

Scrivo a come quoziente e resto della divisione per n +1

Anche per gli interi, moltiplicare e dividere per una potenza della base unoperazione di costo
nullo, e si fa nello stesso modo che con i naturali.

4.5.1 Shift Logico ed Aritmetico


In Assembler esistono due tipi di istruzione di shift (per ciascuna direzione)
-

shift logical left (right) corrisponde alla moltiplicazione (divisione) per 2k di un naturale

shift arithmetic left (right) corrisponde alla moltiplicazione (divisione) per 2k di un intero
61

Appunti sullAritmetica dei Calcolatori Giovanni Stea


La cosa sembra strana, a prima vista, dato che abbiamo appena dimostrato che le operazioni di
moltiplicazione e divisione per una potenza della base sono identiche per i naturali e per gli interi.
Lo sono quando posso, rispettivamente aumentare e diminuire di una unit le cifre della rappresentazione. Quando, invece, lavoro sul contenuto dei registri in assembler, il numero di bit della
rappresentazione fissato (e pari alla dimensione del registro), e quindi devo adottare qualche
cautela in pi.

Infatti, per moltiplicare per due un intero devo compiere le seguenti azioni:
1) avendo a disposizione solo n bit, devo stabilire se il nuovo numero sta su n bit. Questo equivalente a stabilire se il vecchio numero sta su n-1 bit, il che si pu fare usando un detettore di riducibilit, la cui uscita associata alloverflow.
2) Una volta salvata in OF la memoria della fattibilit delloperazione, la moltiplicazione si fa
come con i naturali, cio shiftando ogni cifra a sinistra
Pertanto, i due shift sinistri potrebbero essere svolti con la stessa operazione macchina, lasciando al
programmatore il compito di guardare il flag rilevante alla luce dellinterpretazione del contenuto
del registro.
Per dividere un intero per due, devo compiere le seguenti azioni.
1) estenderne la rappresentazione ad n+1 cifre, il che si fa ripetendo la cifra pi significativa
2) prendere le n cifre pi significative della rappresentazione estesa, buttando via lultima.
Pertanto, i due shift destri compiono operazioni intrinsecamente differenti. Questo il motivo per
cui esistono due istruzioni di shift destro differenti (e, per simmetria, due di shift sinistro differenti)
per naturali ed interi.

4.6 Somma
Dati a A e b B , con A,B in base su n cifre voglio calcolare S s tale che s = a + b , con
S su n cifre. Il problema che n s n 2 , e quindi la somma pu non essere rappresentabile su n cifre. Per lo sicuramente su n+1 cifre, in quanto n +1 2 n .
62

Appunti sullAritmetica dei Calcolatori Giovanni Stea


Supponiamo per un attimo che s sia rappresentabile su n cifre. Sar allora:
(*)

S = s n = a + b n = a n + b n

(*) Come gi osservato, se s non


rappresentabile su n cifre la prima
uguaglianza non vera.

= A + B n

Il che significa che potrei ricavare la rappresentazione della somma come somma delle rappresentazioni modulo n . Questa una propriet estremamente importante, che da sola motiva
lutilizzo della rappresentazione in complemento alla radice dei numeri interi. Del resto, le altre
tre operazioni fondamentali (sottrazione, moltiplicazione, divisione) si fanno usando il sommatore
come circuito di base.
Ricordiamo che, presi due naturali A e B , il

B
n

circuito sommatore produce in uscita


- A + B n

- Cout , che mi dice se la somma tra naturali

Cout

Cin

rappresentabile, in quanto minore di n


n
S

Il nostro problema, adesso, scoprire se la somma tra interi rappresentabile su n cifre. A questo
scopo, il riporto uscente non di nessun aiuto. Consideriamo infatti i seguenti esempi:
- A = n 1, B = 1 S = 0, Cout = 1

Ma se A = n 1 , allora a A + 1 = 1 . Quindi s = a + b = 0 , che un numero intero


perfettamente rappresentabile. Ciononostante, Cout = 1
- A = n 2 1, B = n 2 1 S = n 2, Cout = 0

Ma se S = n 2 , allora s S + 1 = 2 , che non pu essere la somma di due numeri positivi. Ciononostante, Cout = 0
Quindi, quando la somma tra naturali, il riporto uscente mi dice se rappresentabile. Quando la
somma tra rappresentazioni di interi, il riporto uscente non offre nessuna informazione riguardo alla rappresentabilit.
Abbiamo gi osservato come la rappresentabilit della somma sia garantita se ho a disposizione n+1
cifre. Allora possiamo procedere come segue
1) faccio

la

somma

su

n+1

cifre,

S EST = s n+1 = a + b n+1 = a n+1 + b n+1

n +1

estendendo
= AEST + B EST

gli

addendi.

Calcolo

cio

n+1

63

Appunti sullAritmetica dei Calcolatori Giovanni Stea


2) controllo la riducibilit della somma con un apposito circuito di overflow

In base 2, il tutto si semplifica come segue

Se realizzo il sommatore in modo modulare (usando full adder) in teoria mi ci vorrebbe un modulo
in pi per produrre loverflow. Vediamo se se ne pu fare a meno:

ow = sn sn1 = ( an 1 bn 1 cn ) ( an 1 bn 1 cn 1 ) = 0 cn cn1 = cn cn1

XOR
commutativo
e associativo

Quindi in realt basta prendere i riporti degli ultimi due full adder, senza aggiungere niente.
In sostanza con la stessa circuiteria con la quale faccio somme tra naturali, posso fare somme tra
interi. Basta aggiungere uno XOR come rilevatore di overflow.
Richiamo sullAssembler: in Assembler esiste una sola istruzione ADD, che somma numeri naturali secondo lalgoritmo visto a suo tempo. Il risultato di tale somma corretto anche se quei numeri sono in realt la rappresentazione di numeri interi. La rappresentabilit del risultato si stabilisce:
64

Appunti sullAritmetica dei Calcolatori Giovanni Stea


-

guardando se CF=0, nel caso in cui i numeri sommati siano naturali

guardando se OF=0, nel caso in cui i numeri sommati siano rappresentazioni di interi

Visto che lunico a saperlo il programmatore, la ADD setta sia CF che OF, e sar poi il programmatore a testare la condizione giusta, coerentemente con quella che sa essere linterpretazione
corretta. Tipicamente, listruzione che segue una ADD sar una JC/JNC nel caso di somma di
naturali, oppure una JO/JNO nel caso di somma di interi.

4.7 Sottrazione
Per la sottrazione il discorso del tutto simile a quello della somma. Al solito, sempre possibile su
n+1 cifre. Dati a A e b B , voglio calcolare D d = a b . Il tutto lavorando in base su n
cifre. Sar allora:
(*)

D= d

= a b n = a n b n

= A B n = A + B +1

(*) se d rappresentabile su n cifre.

Ma, sicuramente:
D EST = d

n +1

= a b n+1 = a n+1 b n+1

n +1

= AEST B EST

n +1

= AEST + B EST + 1

n +1

Quindi il circuito per la differenza si ricava da quello per la somma.


Potete osservare da soli che si applicano tutte le semplificazioni del caso alla base 2. In particolare,
il rilevatore di overflow per il circuito che lavora in base 2 lo XOR degli ultimi due prestiti.

4.7.1 Comparazione di numeri interi


La comparazione tra numeri interi si fa sempre con un sottrattore, ma non si deve guardare il
riporto uscente. Si deve guardare il segno della differenza, per svolgere la quale necessario
estendere gli operandi (potrebbe, infatti, non essere fattibile su n cifre).

65

Appunti sullAritmetica dei Calcolatori Giovanni Stea

4.8 Moltiplicazione e divisione


Per la moltiplicazione e divisione conviene riferirsi ai valori assoluti dei numeri da manipolare, ed
aggiustare i segni successivamente. Ci consente di riutilizzare la circuiteria per le moltiplicazioni/divisioni tra numeri naturali.
Dovremo quindi far uso di reti che trasformano:
-

da complemento alla radice a modulo e segno (gi vista a suo tempo) e

da modulo e segno a complemento alla radice.

4.8.1 Circuito di conversione da MS a CR


Voglio progettare un circuito che prende il modulo ed il segno di un numero su n cifre e ritorna la
sua rappresentazione in complemento alla radice su n cifre.

Loperazione non sempre possibile. Infatti, abbiamo:


( n 1) a + ( n 1) per il numero intero rappresentato in ingresso, mentre abbiamo

n
2

n
2

1 per luscita.

pertanto necessaria unuscita in pi, che mi dice se loperazione fattibile o meno. Tale uscita la
chiamo ow, segnale di overflow, che deve essere messo ad 1 se loperazione non possibile, a 0
altrimenti.
Quando abbiamo problemi di fattibilit come in questo caso, il modo di procedere standard: si
suppone che loperazione sia fattibile, e si calcola luscita di conseguenza. Se loperazione non
fattibile, luscita sar priva di significato, ma ci sar la linea di ow a segnalarlo.
Se loperazione fattibile,
ABS _ a n
A = a n =
ABS _ a n

sgn_ a = 0

ABS _ a

=
sgn_ a = 1 ABS _ a + 1 n

sgn_ a = 0
sgn_ a = 1

Che si fa con un multiplexer ed un circuito per il calcolo dellopposto, quindi quello visto prima.
Per quanto riguarda loverflow, abbiamo:
ow = 1 ( ABS _ a > n 2 ) or ( ABS _ a = n 2 and sgn_ a = 0 )

Questultima cosa si fa con un comparatore e poco pi (farla per esercizio).

66

Appunti sullAritmetica dei Calcolatori Giovanni Stea

4.8.2 Moltiplicazione
Dati a A e b B , con A su n cifre e B su m cifre, voglio calcolare P p = a b , con P su
n+m cifre. Si vede velocemente che n + m 4 p n + m 4 , il che vuol dire che non ci sono problemi di rappresentabilit per il risultato.

Osserviamo intanto che:


ABS ( a ) ABS ( b ) a, b concordi
p=
ABS ( a ) ABS ( b ) a, b discordi
Quindi posso calcolare ABS ( a ) ABS ( b ) , che il risultato di una moltiplicazione tra naturali, e
poi rappresentare quel risultato o il suo opposto a seconda che a e b siano concordi o discordi.

Si osservi che nella rete finale il segnale di overflow pu essere trascurato, perch abbiamo gi
accertato che non ci sono problemi di rappresentabilit del risultato.

67

Appunti sullAritmetica dei Calcolatori Giovanni Stea

4.8.3 Divisione
Dati a A su n+m cifre e b B su m cifre, voglio calcolare Q q e R r , rispettivamente
su n ed m cifre, tali che a = q b + r . Si deve tener conto del fatto che q pu non essere rappresentabile su n cifre, e quindi Q pu non esistere.
n

n+m

IDIV

R
no_idiv
Quando abbiamo enunciato il teorema della divisione con resto, abbiamo considerato soltanto il
caso di divisore naturale. In tal caso, il teorema garantisce che il risultato unico se 0 r b 1 .
Nel caso di divisione tra interi, il vincolo sopra scritto non vuol dire nulla. Deve essere adottato un
vincolo che generalizzi il precedente.
Si potrebbe pensare di usare il seguente vincolo: ABS ( r ) < ABS ( b ) , che di fatto racchiude il precedente nel caso di numeri naturali.
Attenzione, perch questo vincolo non basta a rendere il risultato della divisione univoco. Infatti,

Dato un numero intero a, se la divisione ha resto non nullo posso scriverlo come

x b + r1
a=
( x + 1) b + r2

r1 > 0
r2 < 0

Ed in entrambi i casi ABS ( r ) < ABS ( b ) . Quindi devo aggiungere unaltra condizione. La condizione che si sceglie che il resto abbia il segno del dividendo. In questo caso sono in grado di
discriminare sempre tra i due casi. Le ipotesi che rendono unico il risultato sono quindi:
ABS ( r ) < ABS ( b )

sgn ( r ) = sgn ( a )

sgn(x) una funzione matematica che vale +1


se

x 0 , e -1 altrimenti. Quindi,

x = sgn ( x ) ABS ( x )

Si osservi che questipotesi vuol dire che nella divisione tra interi il quoziente approssimato per
troncamento, quindi q b sempre pi vicino allorigine rispetto ad a.
68

Appunti sullAritmetica dei Calcolatori Giovanni Stea


Sotto queste ipotesi, posso riscrivere la divisione come:

sgn ( a ) ABS ( a ) = q sgn ( b ) ABS ( b ) + sgn ( r ) ABS ( r ) , con sgn ( a ) = sgn ( r ) per lipotesi che ho
appena fatto. Moltiplicando entrambi i membri per sgn ( a ) , si ottiene:
ABS ( a ) = q sgn ( b ) sgn ( a ) ABS ( b ) + ABS ( r )

Che una divisione tra naturali. Infatti, se il dividendo ed il divisore sono naturali, lo sar anche
il quoziente. Peraltro, q sarebbe negativo solo nel caso di segni discordi tra a e b, nel qual caso
lespressione tra parentesi quadre comunque positiva. Chiamo q sgn ( b ) sgn ( a ) = ABS ( q ) .
Posso calcolare ABS ( r ) e ABS ( q ) utilizzando un modulo divisore tra naturali, purch ABS ( q )
sia un numero (naturale) rappresentabile su n cifre. Per testare se questo vero, dobbiamo
controllare se

ABS ( a ) < n ABS ( b )

(1)

il che si fa con un sottrattore ad n+m cifre (lo stesso che useremmo per testare la fattibilit di una
divisione naturale). Se il risultato di questa disuguaglianza falso, il quoziente della divisione
naturale di sopra un numero naturale che sta su pi di n cifre, quindi ABS ( q ) n . In questo
caso, il quoziente q della divisione intera o q n (se q positivo), oppure q n (se negativo). In ogni caso, il quoziente q non un numero intero rappresentabile su n cifre se ABS ( q )
non un naturale rappresentabile su n cifre.
Quindi, la fattibilit della divisione naturale tra valori assoluti condizione necessaria per la
fattibilit della divisione intera.

69

Appunti sullAritmetica dei Calcolatori Giovanni Stea

A questo punto, posso trovare Q ed R abbastanza facilmente, visto che ne ho i moduli (come uscita
dal divisore naturale) ed i segni (ottenuti banalmente da quelli degli operandi della divisione).
Il problema che nella conversione di Q da MS a CR posso avere overflow. Infatti, il fatto che la
divisione naturale sia fattibile non implica che

n
2

n
2

1,

(2)

e quindi si pu avere overflow.


Quand, quindi, che la divisione intera fattibile? Quando:
a) fattibile quella naturale
b) l risultato di quella naturale un valore assoluto minore di n 2 , oppure uguale a

n 2 con un segno negativo.


Questultimo, per, esattamente ci che ci dice il segnale di overflow in uscita al convertitore da
MS a CR. Quindi, lOR dei due mi d il segnale no_idiv.
Esempio:
Voglio svolgere la seguente divisione tra numeri in base 10: 223 28 . Abbiamo a = 223 , b = 28
, n = 1 , m = 2 . Sappiamo che A = 223 103 = 777 , B = 28 .

70

Appunti sullAritmetica dei Calcolatori Giovanni Stea


1) svolgo la divisione tra i valori assoluti: 223 28 . Tale divisione naturale fattibile, in
quanto il quoziente sta su 1 cifra, ed pari a Q* = ABS ( q ) = 7 (la condizione (1) soddisfatta). Il resto R* = ABS ( r ) = 27 .
2) I segni degli operandi sono discordi, ed il segno del dividendo negativo.
Il quoziente q negativo. Il problema che il numero q = 7 non rappresentabile su una cifra in
base 10 in complemento alla radice. Lo sarebbe se fosse compreso in [ 5; +4] , ma non questo il
caso. Lo posso peraltro vedere testando la condizione (2), che non soddisfatta. Quindi questa
divisione intera non si pu fare.
Se, invece, avessi svolto la divisione 123 28 , il quoziente della divisione naturale sarebbe stato

Q* = ABS ( q ) = 4 , ed il resto R* = ABS ( r ) = 11 . Quindi, r = 11 , ed R = R* + 1

102

= 88 + 1 102 = 89 .

A questo punto, q = 4 , che rappresentabile in base 10 su una cifra. Quindi abbiamo


Q = Q* + 1

101

= 5 + 1 101 = 6 , e la divisione intera fattibile.

Richiamo sullAssembler: esistono due istruzioni distinte per la moltiplicazione e la divisione,


MUL/IMUL, DIV/IDIV, che moltiplicano/dividono rispettivamente naturali ed interi. Infatti,
anche se la moltiplicazione (divisione) tra interi si fa in modo simile a quella tra naturali (si pu
riciclare parte della circuiteria), sono necessarie anche altre operazioni, quali calcolo del valore
assoluto, etc.

4.9 Conversione di base tra interi


Dato a A su n cifre in base , voglio trovare a A su m cifre in base , sempre rappresentando i numeri in complemento alla radice. Visto che il complemento alla radice una legge di
rappresentazione che dipende dalla base (infatti, abbiamo n nelle espressioni), sar, in generale.
A A

Il naturale che rappresenta lintero a dipender dalla base. In particolare, se a un numero negativo
certo che i due naturali saranno diversi. Il problema che voglio risolvere : data una rappresentazione, trovare laltra. Voglio cio trovare una legge f tale che A = f ( AB ) .
Il primo problema quello della rappresentabilit. Sono sicuro che il numero rappresentabile
nella nuova base se m n . La condizione sufficiente, ma non necessaria. Per abbiamo gi
detto che non vogliamo sapere qual il numero a, e quindi quanto di meglio possiamo fare. Da
questa si deriva:
71

Appunti sullAritmetica dei Calcolatori Giovanni Stea


m n log

Che anche sufficientemente intuitiva. Ad esempio:

= 10, n = 2 , = 2 otteniamo m 2 log 2 10 = 7 .


Sintetizzando la legge diretta per la base ed inversa per la base si ottiene:

L1

A
: a=
n + A

an 1 <

an 1

n
m
0a
1
1
a
2
2
L : A =
m
n
m + a a < 0

2
2

L : A =
m n + A

an1 <
an1

Esempio:

= 2, n = 8 , a (11001111)2 = 128 + 64 + 15 = 207


Voglio trovare m per la rappresentazione in base 10: m = 8 log10 2 = 3 . Quindi, = 10, m = 3 .
Il numero rappresentato in base 2 negativo, in quanto la sua cifra pi significativa 1.
La rappresentazione del numero in complemento alla radice in base 10 su tre cifre quindi:
103 28 + 207 = 951 . Anchessa, ovviamente, corrisponde alla rappresentazione di un numero

negativo, in quanto la cifra pi significativa maggiore o uguale a 5.


Attenzione: tutto questo conto lho fatto senza sapere quale fosse il numero a. Ho cio lavorato
solamente sulle rappresentazioni.
A quale numero intero corrisponder? Posso applicare la legge inversa in base 10, ottenendo:

a = 951 + 1 = ( 048 + 1) = 49
Tra laltro, 49 un numero rappresentabile su 2 cifre in base 10. Questo confermato dal fatto
che la rappresentazione riducibile, in quanto am 1 = 1 = 9 am 2 2 = 5 .

4.9.1 Esercizio (da fare a casa)


Siano x ( Ai )12 , y ( 46 )8 due numeri interi in complemento alla radice, con i = matr 12 . Determinare la rappresentazione di S = x + y in complemento alla radice su due cifre in base 10.
Verificare se S o non sempre rappresentabile.

Soluzione
72

Appunti sullAritmetica dei Calcolatori Giovanni Stea

5 Soluzioni degli esercizi per casa


5.1 Soluzione esercizio 1.2.2
1) Il risultato si dimostra come segue:

A =

n 1

n 1

i =0

i =1

ai i = a0 + ai [ ]

= a0

dove , \ {0} per ipotesi. Lultimo passaggio dovuto al fatto che il secondo addendo
certamente multiplo di , in quanto naturale.
2) Partendo dalla rappresentazione di A , il risultato dimostrato dalla seguente sequenza di uguaglianze:

A3 =

n 1

n 1

ai 4i = a0 + ai (1 + 3)
i =0

i =1

n 1
i i

= a0 + ai 1i k 3k .
i =1
k =0 k
3

Tutti i termini dello sviluppo del binomio di Newton, tranne quello per k = 0 , sono numeri naturali
che contengono un fattore 3 a moltiplicare. Pertanto, posso scrivere quei termini come 3 i , per i
numero naturale. Quindi, abbiamo:
n 1

A 3 = a0 + ai (1 + 3 i )
i =1

n 1

n 1

i =1

i =1

= a0 + ai + 3 ai i

=
3

n 1

a
i =0

i
3

3) Il risultato di cui al punto precedente si generalizza banalmente:


A =

n 1

a
i =0

n 1

= a0 + ai 1 + ( 1)

i =1

n 1
n 1
i i
k
= a0 + ai 1i k ( 1) = a0 + ai (1 + ( 1) i )
i =1
i =1
k =0 k

n 1

n 1

i =1

i =1

= a0 + ai + ( 1) ai i

n 1

a
i=0

Dove il penultimo passaggio dipende dal fatto che 1 multiplo di per ipotesi.
4) Il risultato si dimostra come segue:

73

Appunti sullAritmetica dei Calcolatori Giovanni Stea

A =

n 1

ai i
i =0

n 1

( +1)

= a0 + ai ( 1) + ( + 1)

i =1

( +1)

n 1
i i
i k
k
= a0 + ai ( 1) ( + 1)
i =1
k =0 k
( +1)
n 1
i

i
i
i k
k
= a0 + ai ( 1) + ( 1) ( + 1)
i =1
k =1 k

( +1)

Lultimo passaggio si ottiene isolando dalla sommatoria pi interna il termine per k = 0 . Da qui si
evince che il secondo addendo della somma tra parentesi quadre multiplo intero di + 1 , e quindi
pu essere scritto come ( + 1) i per un qualche intero i :
n 1

n 1

A = a0 + ( 1) ai + ai i ( + 1)
i

i =1

n 1

i =1

( +1)

n 1

= a0 + ( 1) ai + ( + 1) ai i
i

i =1

i =1

n 1

= a0 + ( 1) ai

i =1

( +1)

n 1

( +1)

( 1) a
i

i =0

( +1)

5.2 Soluzione dellesercizio 2.4.4


Lincrementatore in base 7 prende in ingresso una cifra in base 7, codificata su 3 variabili logiche
x2x0, pi un riporto entrante cin, e produce in uscita una cifra in base 7, codificata su 3 variabili
logiche z2z0, pi un riporto entrante cout. La tabella di verit la seguente:
cin
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1

x2
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1

x1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1

x0
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1

cout
0
0
0
0
0
0
0
0
0
0
0
0
0
1
-

z2
0
0
0
0
1
1
1
0
0
0
1
1
1
0
-

z1
0
0
1
1
0
0
1
0
1
1
0
0
1
0
-

z0
0
1
0
1
0
1
0
1
0
1
0
1
0
0
-

La mappa di Karnaugh per z2 la seguente:


c inx2
x1x0

00

01

11

10

00

01

1-

11

10

74

Appunti sullAritmetica dei Calcolatori Giovanni Stea

Da cui si ricava la mappa per z2 , nella quale sono indicati anche gli implicanti principali.
A = x2 x1 , B = cin x2 , C = x2 x0
D = cin x1 x0 , E = x2 x1 x0 , F = cin x2 x1 , G = cin x1 x0
x1x0

cinx 2

00

01

00

01

11

10

0-

11

B
10

Lunico implicante essenziale A, E assolutamente eliminabile e tutti gli altri sono semplicemente eliminabili. Le liste di copertura irridondanti sono quelle riquadrate nel disegno sottostante:
A,C,D,F
A,C,D

G?

A,C,D,G

B?

A,B,G
A,B

C?

A,B,C,F

A,B,C

La lista di copertura di costo minimo rispetto al criterio a diodi {A,B,G}, il cui costo 10. La
sintesi di costo minimo a porte NOR per z2 la seguente:

z2 = x2 x1 + cin x2 + cin x1 x0

) (

z2 = x2 + x1 + cin + x2 + cin + x1 + x0

La sintesi secondo la lista di copertura di costo minimo soggetta ad alee statiche del primo ordine
sul livello 1 per le transizioni 0010 1010 , 1000 1010 . Tali alee possono essere rimosse inserendo limplicante C nella lista di copertura.

) (

) (

z2 = x2 + x1 + cin + x2 + cin + x1 + x0 + x2 + x0

)
75

Appunti sullAritmetica dei Calcolatori Giovanni Stea

5.3 Soluzione dellesercizio 2.4.5


1) il circuito di lookahead a 2 bit prende in ingresso due bit di ciascun addendo, che chiamiamo x1
x0 ed y1 y0 ed un riporto entrante cin, e produce il riporto uscente cout di una somma a due bit.
Pertanto, una descrizione del circuito la seguente:
x1x0

y1y0

cin=0
00

01

11

10

x1x0

00

01

11

10

y1y0

cin=1
00

01

11

10

00

01

11

10

2) In un sommatore a N=2n bit con il circuito di lookahead a 2 bit, il riporto si propaga in tempo

2 per ogni blocco di 2 full adder. Allultimo di tali blocchi di due full adder il riporto entrante
sar pronto al tempo 2 ( n 1) . Quindi, lultimo full adder potr fornire il risultato al tempo
2 ( n 1) + 4 = 2 ( n + 1) .

3) Gli implicanti principali sono i seguenti (quelli ottenibili luno dallaltro per simmetria sono
riportati nel medesimo colore):
x1 y1 , cin x1 y0 , cin y1 x0 , cin x1 x0 , cin y1 y0 , x1 x0 y0 , y1 y0 x0
Si vede senza difficolt che gli IP sopra menzionati sono tutti essenziali. Quindi, la sintesi SP di
costo minimo : z = x1 y1 + cin x1 y0 + cin y1 x0 + cin x1 x0 + cin y1 y0 + x1 x0 y0 + y1 y0 x0 .

76

Appunti sullAritmetica dei Calcolatori Giovanni Stea

5.4 Soluzione dellesercizio 2.4.6


x1 x0
b x2

x1 x0
b x2

y2 y1 y0
00

01

11

10

00

000

010

001

100

----

01

011

----

----

----

----

----

11

000

----

----

----

10

001

010

100

011

00

01

11

10

00

01

----

----

11

----

10

2) Dalla mappa sopra scritta si ricava immediatamente la sintesi SP, e da questa quella a porte
NAND:

c = x2 + b x1 x0

c = x2 b x1 x0

y2 = b x1 x0 + b x1 x0

)(

y2 = b x1 x0 b x1 x0

y1 = x1 x0 + b x2 + b x1 x0

)
( )( )(
y = (b x x ) (b x ) (b x x )

y0 = b x2 x0 + b x2 + b x1 x0

y1 = x1 x0 b x2 b x1 x0
0

3) Per la sintesi PS abbiamo:

)(

c = ( x2 + x1 ) x1 + x0 b + x2

c = x2 x1 + x1 x0 + b x2

)(

y2 = x1 + b x0 + b x0

y2 = ( x1 ) b + x0 b + x0

y1 = b x1 + x1 x0 + b x2 + x2 x1 x0

y1 = b + x1 x1 + x0 b + x2 ( x2 + x1 + x0 )

y0 = b x2 + x1 x0 + b x0 + b x2 x0

y0

( )(
)( )
= (b + x ) ( x + x ) (b + x ) (b + x
2

+ x0 )

Da cui si ricava quella a porte NOR.

) (

c = x2 + x1 + x1 + x0 + b + x2

( ) ( )
y = (b + x ) + ( x + x ) + (b + x ) + ( x + x + x )
y = (b + x ) + ( x + x ) + (b + x ) + (b + x + x )
( )

y2 = x1 + b + x0 + b + x0
1

4) la realizzazione a porte NAND di y0 costa 4 a porte e 11 a diodi, mentre quella a porte NOR
costa 5 a porte e 13 a diodi. Pertanto, la prima ha costo minore.
77

Appunti sullAritmetica dei Calcolatori Giovanni Stea

5.5 Soluzione dellesercizio 2.7.2


Il numero di variabili logiche di ingresso alla rete 5 4 = 20 , essendo una cifra in base 10 BCD
codificata su 4 variabili.
Verificare la divisibilit per 2, 5, 10 estremamente semplice. Infatti, la divisibilit pu essere
decisa sulla base del valore della cifra a0 . Dette x3 ,..., x0 le variabili logiche che codificano a0 , si
ottiene la seguente tabella di verit
x3 x2 x1 x0 z2 z5 z10
0 0 0 0 1 1 1
0 0 0 1 0 0 0
0 0 1 0 1 0 0
0 0 1 1 0 0 0
0 1 0 0 1 0 0
0 1 0 1 0 1 0
0 1 1 0 1 0 0
0 1 1 1 0 0 0
1 0 0 0 1 0 0
1 0 0 1 0 0 0
1 0 1 0 - 1 0 1 1 - 1 1 0 0 - 1 1 0 1 - 1 1 1 0 - 1 1 1 1 - -

Da cui si ricava immediatamente:


z2 = x0 , z5 = x3 x2 x1 x0 + x2 x1 x0 , z10 = x3 x2 x1 x0

Il criterio di divisibilit per 3 richiede invece di conoscere la somma delle cifre in base 10. Si noti
4

che, detta ai li-esima cifra in base 10,

a
i =0

45 . Il numero naturale 45 sta su 6 bit.

La rete che sintetizza luscita z3 riportata nella figura sottostante.


0
4
4

a0
0

a3

z3

a2

a1

0
4

a4

78

Appunti sullAritmetica dei Calcolatori Giovanni Stea

5.6 Soluzione dellesercizio 3.2.1


1) Se x rappresentabile su n cifre in complemento alla radice, lo anche in traslazione e viceversa.
Pertanto loperazione di calcolare Y dato X sempre possibile.
La relazione tra il numero intero x e la sua rappresentazione in complemento alla radice :

X
x=
n
X

se X n 1 < 2
se X n 1 2

mentre quella tra Y e x Y = x + n 2 . Mettendo insieme le due si ottiene:

X + n 2 se X n 1 < 2
Y =
n
X 2 se X n 1 2
e considerando che n 2 = n 1 2 , si ottiene rapidamente
( X + 2, X n 2 ,..., X 0 ) se X n 1 < 2
Y = n 1
( X n 1 2, X n 2 ,..., X 0 ) se X n 1 2

(1.3)

In una base generica, il circuito che realizza la (1.3) quindi il seguente:

Dove la rete R modifica la cifra di peso pi significativo, in accordo allespressione scritta sopra.
2) Siano d2d0 i tre bit che rappresentano la cifra X n 1 , e z2z0 i tre bit che rappresentano Yn 1 .
Il circuito che realizza la (1.3) in base 6 si trova come sintesi minima sulla seguente mappa di Karnaugh:
La cui sintesi a costo minimo la seguente:

z2 = d1 d 0 + d 2 d1 d 0
z1 = d 2 d 0 + d 2 d1 d 0
z0 = d 0

3) Siano d3d0 i quattro bit che rappresentano la cifra X n 1 , e z3z0 i quattro bit che rappresentano la cifra Yn 1 . La relazione richiesta z3 = d3 , zi = di per i = 0,1, 2 , in quanto un numero in
base 16 in codifica 8421 su n cifre ha la stessa rappresentazione di un numero in base 2 su 4n cifre,
ed nota dalla teoria dei convertitori la relazione tra la rappresentazione in complemento alla radice

79

Appunti sullAritmetica dei Calcolatori Giovanni Stea


ed in traslazione per i numeri in base due. In ogni caso, il circuito che realizza la (1.3) in base 16 si
trova come sintesi minima sulla seguente mappa di Karnaugh:

5.7 Soluzione dellesercizio 4.3.1


Dalla mappa di Karnaugh a sinistra si nota

a1 a0

a3 a2

00

01

11

10

immediatamente che z2 = z1 = 0 , e che z3 = z0 .


00

01

11

10

0000 0000 0000 0000


0000 1001 1001 1001
----

----

1001 1001

----

----

----

----

11

10

Pertanto la sintesi pu essere svolta una volta


sola.

z3z2z1z
0

Sintesi a porte NOR


a3 a2

A lunico IP essenziale, B,C, F sono assolu-

a1 a0
00

01

C
00

tamente eliminabili e D,E sono semplicemente eliminabili. Pertanto le sintesi a costo

D
01

1
E

minimo sono due, A,D ed A,E. La prima


anche esente da alee del 1 ordine.

B
F

11

----

----

----

----

10

----

----

z3 = z0 = a3 a2 + a3 a1 a0

) (

z3 = z0 = a3 + a2 + a3 + a1 + a0

z3

Sintesi a porte NAND


80

Appunti sullAritmetica dei Calcolatori Giovanni Stea

a3 a2

I tre implicanti sono tutti essenziali. Esiste

a1 a0
00

01

11

10

00

01

11

----

----

----

----

10

----

----

una sola sintesi, quindi esente da alee, ed


B

z3 = z0 = a3 + a2 a0 + a2 a1
= a3 + ( a2 a0 ) + ( a2 a1 )

= a3 ( a2 a0 ) ( a2 a1 )

z3

5.8 Soluzione dellesercizio 4.4.1


Dette h1h0 e l1l0 le variabili che codificano le cifre di peso n-1 ed n-2 , la mappa di Karnaugh la
seguente:
l1l0

h1h0
00

01

11

10

00

01

l1l0

h1h0
00

01

11

10

00

01

1
B

A
11

11

1
C

10

10

Gli implicanti principali per z sono elencati a destra, e sono tutti semplicemente eliminabili. Si
osserva che non esistono liste di copertura con due implicanti, quindi la lista di copertura a costo
minimo deve includerne almeno tre. Le liste di copertura irridondanti sono le seguenti: ABC,
ABC, AACC, AABB, BBCC, AACB, AABC. Quelle di costo minimo sono ABC,
ABC, dalle quali si ricava:
z = h1 h0 + h1 l1 + h0 l1

z = h1 h0 + h1 l1 + h0 l1

( ) ( ) ( )
= (h + h ) + (h + l ) + (h + l )

z = h1 h0 + h1 l1 + h0 l1
1

( ) ( ) ( )
= (h + h ) + (h + l ) + (h + l )

z = h1 h0 + h1 l1 + h0 l1
1

In entrambe le sintesi a porte NOR si individuano alee statiche del 1 ordine sul livello 0, in corrispondenza delle seguenti transizioni:
-

ABC:
ABC:

010x -110x, 001x-011x, 100x-101x


100x-110x, 101x-001x, 010x-011x
81

Appunti sullAritmetica dei Calcolatori Giovanni Stea


In tutti e due i casi le alee possono essere eliminate inserendo tutti e tre i sottocubi mancanti. La
sintesi priva di alee quindi unica, ed include tutti i sottocubi principali.

5.9 Soluzione dellesercizio 4.9.1


Vediamo prima la rappresentabilit. In generale, lintervallo di rappresentabilit su due cifre in base
10 [ 50,49] . La somma di due numeri in base 12 ed in base 8 su due cifre sta su un intervallo di:
122 + 82 122 + 82

2 [ 104,102 ]

,
2
2

Quindi, in generale, la somma di due numeri interi in base 12 ed in base 8 su due cifre non rap-

presentabile in base 10 su due cifre. Il che non impedisce che il risultato di questa somma sia
rappresentabile.
Il numero i un numero qualunque, che va da 0 a B. Pi grande i, pi grande il numero (negativo) rappresentato. Quindi, per discutere sulla rappresentabilit del risultato, dovrei osservare se la
somma rappresentabile nel caso in cui x sia il numero pi piccolo (pi negativo) possibile. In quel
caso, ottengo xmin = ( A0 )12
Che numero la somma? Applico la regola inversa per calcolare i numeri interi xmin ed y e li sommo

{(

S = A0

{
= {( 20 )

12

( )

+ 1 + 46 + 1

8

= (1B )12 + 1 + ( 31)8 + 1


12

+ ( 32 )8

= {[ 24 ] + [ 26]} = 50

Quindi, la somma un numero negativo, ma sempre superiore a -50. Quindi la somma sempre
rappresentabile su 2 cifre in base 10.
Passiamo adesso a cercare la rappresentazione. Per farlo, fissiamo un valore per i ,

i = 10 , e

10 = ( A)12 . Quindi, cerchiamo la rappresentazione in base 10, che per :


S = X 10 + Y10 102
Per poter trovare X 10 posso applicare le regole della conversione di base.
Posso convertire ( AA)12 in un numero in base 10 su un numero di cifre m tale che m n . Quindi,
mi ci vogliono tre cifre in base 10 per poter applicare la conversione in generale. ovvio che il
numero che otterr dovr essere rappresentabile su 2 cifre in base 10, e quindi dovr necessariamente ottenere qualcosa che sia riducibile. Vediamo

82

Appunti sullAritmetica dei Calcolatori Giovanni Stea

X 10 = 103 122 + X 12 = 1000 144 + ( AA)12 = 1000 144 + (130 )10 = 986
Il numero 986 in base 10 riducibile, perch la sua cifra pi significativa 9 e la seconda maggiore o uguale di 5, e quindi X 10 = 86 , corrispondente a x = (13 + 1) = 14 .

Per trovare Y10 applico lo stesso procedimento. Mi bastano 2 cifre in base 10, stavolta.

Y10 = 102 82 + Y8 = 100 64 + ( 46 )8 = 36 + 38 = 74


Il che conferma che questa sia la rappresentazione di un numero negativo.
La rappresentazione della somma, quindi, : S = 86 + 74 102 = 60 .

( )

Tale numero corrisponde a s = 60 + 1 = 40 .

83

Appunti sullAritmetica dei Calcolatori Giovanni Stea

6 Altri esercizi svolti


6.1 Esercizio Febbraio 2006 (numeri naturali e interi)
1) Disegnare la rete combinatoria che prende in ingresso la rappresentazione di tre numeri naturali
a, b, c, ciascuno su n bit, e produce in uscita la rappresentazione del massimo dei tre. Descrivere e
sintetizzare tutte le eventuali reti combinatorie non standard utilizzate.
2) Modificare, se necessario, la soluzione di cui al punto 1 in modo che produca il risultato corretto
interpretando i numeri in ingresso come la rappresentazione di interi a, b, c codificati in complemento alla radice.
NB: nel caso si descriva la rete in Verilog, si ricordi che gli operatori di relazione <, >, , non
sono reti standard, e quindi devono essere descritte.

6.1.1 Soluzione
Si indichi con A, B, C, la rappresentazione su n bit dei numeri a, b, c. Il bit di uscita dei tre comparatori a 1 quando, rispettivamente, a<b, b<c, c<a. Confrontando le uscite dei comparatori si possono produrre, tramite la rete combinatoria RC, i due bit di comando di un multiplexer 4 to 1 che
sceglie tra A, B, C.

xAB xBC xCA b1 b0


0
0
0
- 0
0
1
0 0
0
1
0
1 0
1
1
0 0
1
0
0
0 1
1
0
1
0 1
1
1
0
1 1
1
1
- -

b0 = x AB

b1 = xBC xCA

84

Appunti sullAritmetica dei Calcolatori Giovanni Stea


Il comparatore pu essere realizzato usando un sottrattore, in uno dei due modi descritti nella figura
sottostante, a seconda che si comparino naturali (come richiesto al punto 1) o interi (come richiesto
al punto 2).

Soluzione analoghi ed ugualmente corretti si ottengono:


-

usando le variabili di uscita dei tre comparatori come variabili di comando di un multiplexer
8 to 1, agli 8 ingressi del quale connettere A, B, C in modo ovvio.

Comparando prima due numeri (e.g., A e B), e facendo uscire il massimo dei due con un
multiplexer a due vie, e comparando questultimo con il terzo numero (C). In questo caso
servono due comparatori (invece che tre) e due multiplexer a due vie (invece che uno a quattro vie), e nessuna logica di raccordo.

6.2 Esercizio Gennaio 2008 (numeri naturali)


Sintetizzare una rete combinatoria che prende in ingresso tre numeri naturali A, B e C, ciascuno su n
bit in base 2, li interpreta come le lunghezze di tre lati, e produce due uscite ret e area. Luscita ret,
su 1 bit, vale 1 se A, B e C sono i lati di un triangolo rettangolo e zero altrimenti. Luscita area, su ?
bit, contiene larea del triangolo (a meno di approssimazioni) se ret vale 1, ed un valore non significativo altrimenti.
Nota: Se lo si ritiene opportuno, si risolva lesercizio supponendo di avere a disposizione una rete
MAX3, che prende in ingresso i numeri A, B e C e presenta in uscita la codifica, su 2 bit, del massimo tra i tre numeri.
Nota: Si descriva esplicitamente qualunque rete non descritta a lezione.
Domanda facoltativa: Si sintetizzi la rete MAX3

85

Appunti sullAritmetica dei Calcolatori Giovanni Stea

6.2.1 Soluzione
Luscita area sta su 2n-1 bit.
Per produrre luscita ret, bisogna stabilire se il triangolo rettangolo o meno. Un triangolo rettangolo quando i suoi lati verificano il teorema di Pitagora: ci significa che deve esistere una permutazione dei tre lati A, B, C, per cui L12 + L2 2 = L32 . Questo possibile solo quando L3 il lato pi
lungo dei tre. Per poter testare se il triangolo rettangolo, quindi, necessario decidere quale dei tre
lati ha lunghezza massima. Questo pu essere fatto usando la rete MAX3 dellesercizio precedente,
nel seguente modo.
0

ipo

0
MUL

2n+1

2n
0

COMP.
2n+1 bit

ORDINA

cat1

cat2

0
MUL
2n

2n+1

SOMM.
2n+1bit

ret

2n+1

0
MUL
2n

2n+1

Dove la rete ORDINA pone sulluscita ipo il valore max(A,B,C), e sulle altre due uscite gli altri due
valori. ORDINA fatta come segue:

86

Appunti sullAritmetica dei Calcolatori Giovanni Stea


La rete COMP un comparatore a 2n+1 bit, che pu essere realizzato con una barriera di 2n+1
porte XOR seguiti da una porta NOR a 2n+1 ingressi, o dal NOR delle uscite di un sottrattore a
2n+1 bit. Per quanto riguarda la produzione delluscita area, la rete la seguente:
0

cat1

2n-1

area

MUL

2n

cat2

Ovviamente, se il triangolo non rettangolo, luscita area contiene un valore che non ha nulla a che
vedere con larea del triangolo stesso.

6.3 Esercizio Febbraio 2005 (numeri naturali)


Sia A = ( an 1 a0 ) 4 un numero naturale rappresentato su n = 5 cifre in base quattro. Realizzare un
circuito che prenda in ingresso le cifre di A e produca in uscita 0 se A multiplo di tre, 1 altrimenti.
Si realizzi il circuito osservando che A 3 = 0 se e solo se

n 1

a
i =0

=0,

i
3

PARTE FACOLTATIVA: Dimostrare il precedente risultato.

6.3.1 Soluzione
Prima la parte facoltativa. Il risultato dimostrato dalla seguente sequenza di uguaglianze:
A3 =

n 1

a 4
i =0

n 1

= a0 + ai (1 + 3)

i =1

n 1
n 1
i i

= a0 + ai 1i k 3k = a0 + ai (1 + 3 i ) =
i =1
i =1
k =0 k
3
3
n 1

n 1

i =1

i =1

= a0 + ai + 3 ai i

=
3

n 1

a
i=0

i
3

n 1

a
i =0

i
3

Dove il terzultimo passaggio dipende dal fatto che tutti i termini dello sviluppo del binomio di
Newton, tranne quello per k = 0 , sono numeri naturali che contengono un fattore 3 a moltiplicare.
Un possibile circuito che soddisfa la specifica il seguente:

87

Appunti sullAritmetica dei Calcolatori Giovanni Stea

Si

pu

usare

anche il carry in
uscita e fare la
somma su n-1 bit

X vale al massimo 15. Allora,


X/3 pu fare anche 5, che sta su
3 bit. Quindi, il quoziente deve
poter stare su 3 bit, ma questo
possibile solo se rappresento X
su 5 bit, perch altrimenti non
vale la diseguaglianza necessaria per la divisione

Le cifre della rappresentazione di A sono codificate usando la rappresentazione in base due su due
bit - dei valori delle cifre stesse. Si noti che la condizione X < nY , che esprime la garanzia di
correttezza di funzionamento del divisore, sempre rispettata, essendo, in questo caso, Y = 3 ,

= 2 , n = 3 e X 15 .

6.4 Esercizio Giugno 2004 (numeri interi)


Sia a A in complemento alla radice su sei cifre in base due. Progettare un circuito, senza fare
uso di moltiplicatori, che riceve in ingresso A e produce in uscita B b in complemento alla
88

Appunti sullAritmetica dei Calcolatori Giovanni Stea


radice su n cifre tale che b = 7 5a . Esemplificare il comportamento del circuito (ovvero, mostrare
i livelli logici su ingressi, uscite, e collegamenti interni del circuito progettato) quando a = 14 .
Suggerimento: Ridefinire in maniera equivalente la relazione aritmetica fra a e b in modo da rendere non necessario luso di moltiplicatori.

6.4.1 Soluzione
Poich 32 a < 31 , si ha 148 < b 167 . Sono quindi necessarie n = 9 cifre per rappresentare b
in complemento alla radice.
Una possibile soluzione riportata nello schema in figura, ottenuto ridefinendo la relazione aritmetica fra a e b come b = ( 7 a ) 4a , ovvero b = c d con c = 7 a e d = 4a .
Calcolate allora le rappresentazioni (vedi poco sotto) C e D di c e d, si ha B = C + D + 1 .
Le rappresentazioni (su 9 cifre) C e D si ottengono da A utilizzando propriet note della rappresentazione in complemento. In particolare, la differenza fra due numeri, da cui C = 7 + A + 1 , ed il
prodotto per una potenza della radice, da cui D = 2 2 A .

6
5

Relativamente allesempio specificato, risulter:

A =B001110
7

C =B1111001

+
1

D=B00111000
B =B111000001

7
8

6
7
9

9
+

+
1

6.5 Esercizio Settembre 2012 (numeri interi)


Si consideri un piano cartesiano a coordinate intere, rappresentate su n bit in complemento alla
radice. Siano a, b, c, i tre coefficienti di una parabola e sia x unascissa sul piano. Si assuma che
tutti i numeri sopra elencati siano rappresentabili.
89

Appunti sullAritmetica dei Calcolatori Giovanni Stea


1) Sintetizzare la rete combinatoria che prende in ingresso le rappresentazioni A, B, C, X dei 4
numeri a, b, c, x e produce in uscita su ? bit la rappresentazione M del numero m, coefficiente angolare della tangente alla parabola nel punto di ascissa x.
2) Assumendo n>2, descrivere e sintetizzare la rete combinatoria che produce i due bit meno
significativi di M, m1m0. Si consiglia di seguire i seguenti passi:
a. Individuare da quali variabili logiche dipendono m1m0
b. risalire allindietro da queste fino agli ingressi che le producono.
c. Scrivere la mappa di Karnaugh.

6.5.1 Soluzione
1) Il risultato da ottenere il seguente:
m = 2ax + b . Il numero minimo di bit richiesto

per M 2n+1, come si pu verificare meccanicamente con un calcolo semplice. La rete


che produce il risultato quella a destra (che
non sente lingresso C).

2) Come si vede dalla figura, m0 dipende soltanto dal bit meno significativo dei due ingressi del
sommatore. Uno di questi due bit vale zero, quindi m0 = b0 . Per quanto riguarda m1, questo dipende
da b1 e dal bit meno significativo di Y, y0. Per capire quanto vale y0 in funzione degli ingressi,
necessario osservare che il bit meno significativo di un numero intero vale 0 se il numero pari ed
1 se dispari, indipendentemente dal segno del numero. Quindi, y0 se e solo se entrambi i numeri a
e x sono dispari (altrimenti il loro prodotto pari), cio y0 = a0 x0 . Quindi, m1 = b1 + a0 x0 . La rete
combinatoria richiesta ha quindi tre ingressi, a0, x0, b1, ed unuscita, m1, ed la seguente:

90

Appunti sullAritmetica dei Calcolatori Giovanni Stea

La sintesi a costo minimo quindi m1 = b1 a0 + b1 x0 + a0 x0 b1 , oppure m1 = b1 a0 x0 .

91