Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Corso di Laurea
Ingegneria Elettronica e Informatica
Anno Accademico 2013/2014
Calcolatori
Dario Bruneo
1
Nota
Le slide seguenti sono da intendersi come materiale didattico aggiuntivo del corso di
Calcolatori.
Non possono in nessun modo essere sostitutive dei libri di testo, devono
quindi essere usate esclusivamente come una guida.
Mano, Kime “Logic and Computer Design Fundamentals” 3° edition Pearson Prentice Hall
In generale, in un sistema posizionale in base b (i cui elementi sono le cifre 0,1, ,b-1), data una sequenza di
cifre:
an-1an-2 a0,a-1a-2 a-m
n−1
il valore del numero è dato dalla seguente espressione in serie: ∑ ab i
i
i=−m
Nello studio dei calcolatori elettronici i sistemi numerici più importanti sono:
La conversione in base dieci di un numero espresso in una qualsiasi base b è facilmente ottenibile
eseguendo, in aritmetica decimale, i calcoli relativi all’espressione in serie del numero stesso
Es. (sistema ottale)! ! ! ! (324,7)8 = 3*82 + 2*81 + 4*80 + 7*8-1 = 192 + 16 + 4 + 0,875 = (212,875)10
Nel caso del sistema binario i calcoli sono semplificati dal fatto che la potenza del 2 (base) deve essere
moltiplicata solo per 1 o per 0
Nel caso del sistema esadecimale si deve fare attenzione a far corrispondere alle lettere il corretto valore
decimale (A=10, B=11, C=12, D=13, E=14, F=15)
Per la conversione di un numero espresso in base 10 in una qualsiasi altra base è utile separare i due casi:
numeri interi e razionali
numeri interi: si consideri un numero intero N in base 10 da dovere convertire nella generica base b.
Dividendo N per la base b si ottengono un quoziente N1 ed un resto R1 tali che: N = N1*b + R1.
Dividendo a sua volta N1 per la base b si ottengono un quoziente N2 ed un resto R2 tali che: N1 = N2*b + R2, che, sostituiti nell’equazione
precedente, danno N = N2*b2 + R2b + R1.
Procedendo il ragionamento (dividendo N2 per la base b) si ottiene: N = N3*b3 + R3b2 + R2b + R1.
Ad un certo punto si otterrà un quoziente Nk < b tale che il risultato di una successiva divisione per b dia come quoziente 0 ed un resto
Rk
I resti (R1, R2, ... Rk) sono, per le proprietà della divisione, numeri contenuti nella base b, quindi l’espressione Rk*bk-1 + + R3b2 + R2b + R1
corrisponderà all’espressione in serie del numero N nella base b
esempio: “convertire in base 2 il numero 23” esempio:! “convertire in base 8 il numero 196”
numeri razionali: si consideri un numero razionale F (per semplicità si considera solo la parte frazionaria) in base 10 da dovere
convertire nella generica base b
Tale numero, espresso nella base b, sarà rappresentato da 0,a-1a-2a-3... con ai compreso tra 0 e b-1
Quindi, la parte intera di b*F (che sarà sicuramente compresa tra 0 e b-1 essendo 0 < F < 1) coincide con il coefficiente più significativo
(a-1) della rappresentazione in base b del numero F
Considerando la rimanente parte frazionaria (F1 = a-2b-1 + a-3b-2 + ...) e ripetendo il procedimento si otterrà il secondo coefficiente, infatti
b*F1 = = a-2 + a-3b-1 + ...
Si procede, nello stesso modo, per ottenere gli altri coefficienti fino ad ottenere una parte frazionaria nulla
Tale procedimento non è necessariamente esatto: una frazione decimale con un numero finito di cifre potrebbe richiedere, in base b, un
numero infinito di cifre
0,25*2 = 0,5 ! con parte intera 0 0,3*2 = 0,6! ! con parte intera 0
0,50*2 = 1,0 ! con parte intera 1 0,6*2 = 1,2! ! con parte intera 1
Quindi si avrà: ! 0,25 = (0,01)2 (risultato esatto) 0,2*2 = 0,4 !! con parte intera 0
Normalmente, per la conversione da una generica base b1 ad una generica base b2 conviene sempre passare
dalla base 10!! (N)b1 ➔ (N)10 ➔ (N)b2
Ciò è dovuto alla nostra familiarità nello svolgere operazioni algebriche in base 10
Fanno eccezione le conversioni tra basi potenze dello stesso numero (ad es. 2 - 16 = 24)
In questo caso la conversione è immediata infatti ad ogni cifra esadecimale corrisponderanno 4 cifre binare
si procede convertendo ogni singola cifra esadecimale nel corrispondente binario ottenendo: ! (1A2)16 = (0001 1010 0010)2
si procede raggruppando, a partire dal bit meno significativo, le cifre binarie a 4 a 4 e convertendole nel corrispondente esadecimale, si
ottiene: (100 1010)2 = (4A)16
Analogo discorso vale per la conversione tra base 2 e base 8 (ogni cifra ottale corrisponde a 3 cifre binarie)
In binario, essendo solo 2 i simboli, le operazioni sono notevolmente facilitate (non esistono le tabelline!):
Somma Sottrazione
riporto ➔ 1 1 prestito ➔ 1 1 1
addendo (4)10 1 0 0 + minuendo (12)10 1 1 0 0 -
addendo (13)10 1 1 0 1 = sottraendo (7)10 1 1 1 =
risultato (17)10 1 0 0 0 1 risultato (5)10 0 1 0 1
Moltiplicazione Divisione
moltiplicando (11)10 1 0 1 1 *
dividendo ↓ divisore ↓
moltiplicatore (6)10 1 1 0 =
0 0 0 0 +
(27)10 1 1 0 1 1 1 1 (3)10
prodotti parziali ➔ 1 0 1 1 +
1 0 1 1 = - - 0 1 1 0 0 1 (9)10
risultato (66)10 1 0 0 0 0 1 0
- 1 1 risultato ↑
Nello studio e nella progettazione dei calcolatori elettronici, come vedremo, giocano un ruolo fondamentale
i concetti di complemento alla base-1 e complemento alla base
Si definisce complemento alla base-1 di un numero intero positivo N (espresso in base b con un numero di
cifre n), il numero Nc-1 che si si deve sommare a N per ottenere il valore bn-1
Nc-1 = (bn-1) - N
In base 2 tale operazione risulta molto semplice perchè consiste nell’invertire tutti i bit 1 in 0 e viceversa
1 1 1 1
1 0 0 0 0 0 - 1 1 1 1 1 -
25 = 100000! ! 25-1 = 1 = = 11111 !! ! 11111 - 10010 = 1 0 0 1 0 = = 01101
1 1 1 1 1 0 1 1 0 1
Calcolatori a.a. 13/14 Dario Bruneo
12
Complementi (cont.)
Si definisce complemento alla base di un numero intero positivo N (espresso in base b con un numero di
cifre n), il numero Nc che si si deve sommare a N per ottenere il valore bn
Nc = bn - N
Ad esempio, in decimale:
Il complemento alla base di 3457 sarà dato dal suo complemento alla base-1 +1, cioè: 6542+1 = 6543
Ad esempio, in binario:
Il complemento alla base di 100111010 sarà dato dal suo complemento alla base-1 +1 cioè: 011000101 + 1 = 011000110
Si noti che:
Il calcolo del complemento di un numero (sia alla base-1 che alla base) è influenzato dal numero di cifre:
Il complemento alla base-1 di un numero a n cifre ha sempre un numero di cifre pari a n (eventualmente con alcuni 0 all’inizio)
Il complemento alla base di un numero a n cifre ha un numero di cifre pari a n+1 nel caso in cui il numero di partenza sia composto da
tutti 0
Se si limita a n il numero di cifre del complemento alla base di un numero a n cifre allora il complemento alla base di 0 sarà sempre 0
In binario il complemento a 2 del numero formato dal primo bit significativo a 1 e dai rimanenti bit a 0 coincide con il numero stesso