Sistemi Digitali
1
Definizione
DEF Sistemi Digitali Sono tutti quegli apparati al
cui interno le grandezze fisiche impiegate come
segnali sono vincolate ad assumere solo valori
discreti.
DEF Sistemi Binari Sono quei sistemi digitali in cui
i segnali sono limitati a due valori di regime.
2
Segnali elettronici: giunzione P-N
Zona di “svuotamento”
P: zona “drogata” con
lacune
N: zona drogata con
elettroni
3
Segnali elettronici: variazioni di
potenziale
+
Si riduce la zona di
svuotamento, la differenza
di potenziale diminuisce
-
+
Aumenta la zona di
svuotamento e la differenza
di potenziale
I “transistor” si costruiscono con connessioni P-N-P o N-P-N
4
Segnali analogici e digitali
“1” logico
“0” logico
5
Analog Waveform
Voltage (V)
5
Time
0
Forme d’onda “idealizzate”
Digital Waveform
1
1
Voltage (V)
5
0
0
Time
6
Analisi e Sintesi
• Rispetto ai sistemi analogici, nei quali i segnali possono
assumere tutti i possibili valori in un continuo, i sistemi
digitali consentono una minore complessità dei
dispositivi che devono generare i segnali, ed una
maggiore immunità ai disturbi.
• Un sistema digitale é un circuito costituito da
componenti elementari e dai collegamenti che li
interconnettono.
• Obiettivo: analisi e sintesi di sistemi digitali.
• analisi dal circuito alla specifica formale
7
• sintesi dalla specifica funzionale al circuito
“Viste” della progettazione
digitale.
• Vista comportamentale: descrive le funzioni indipendentemente
dall’implementazione (es: progettare un circuito che esegua la
somma aritmetica fra due numeri interi )
• Vista strutturale: descrive il modello di interconnessione dei
componenti (es: disegno dei componenti digitali elementari e
loro interconnessioni)
• Vista fisica: componenti fisici (es. transistors, layout su silicio,
tecnologie di integrazione..)
8
Esempio: sommatore aritmetico
X
Y
adder
X+Y
Comportamentale o
funzionale (quale
funzione)
Strutturale o simbolica (collegamenti)
fisica (layout)
9
Campi di Applicazione
• La progettazione digitale interessa tutti i campi di
applicazione dell'elettronica:
•
Calcolo Automatico
•
Telecomunicazioni
•
Controlli Automatici
•
Misure Elettriche
• ....
• In questo corso, oltre ad introdurre i principi generali di
progetto di sistemi digitali, siamo interessati a studiare
applicazioni nel campo del Calcolo Automatico.
10
Aspetti della progettazione digitale
• Come si rappresenta l’informazione (dati,
istruzioni, comandi..) in un sistema digitale
• Analisi
• Sintesi
11
Rappresentazione
dell'Informazione
• I calcolatori elettronici sono macchine in grado di elaborare
informazioni trasformandole in altre informazioni.
• Nel mondo dell'informatica, intendiamo in modo più restrittivo
per informazione tutto ciò che può essere rappresentato tramite
opportune sequenze di simboli in un alfabeto prefissato.
• La rappresentazione estensionale di un insieme I é un insieme
di “parole” ognuna delle quali esprime un elemento di I.
Esempio: mela,pera,uva,arancia
• Un codice C é un insieme di parole composte da simboli di un
alfabeto S (detto alfabeto di supporto di C).
12
Esempi di codici
Codice 2:
CodiceLinguaggio
1:
linguaBinario
Italiana
Codice 1
Macchina
Razzo
Aereo
00
Macchina
01
Razzo
Aereo 10
Codice 2
00
01
10
13
Codifica e decodifica
• CODIFICA
• La codifica di un insieme di informazioni I in un dato codice C é
una funzione
f: I  C
• Esempio:
macchina  00, razzo  01, aereo  01
dove I è un sottoinsieme di parole della lingua italiana, e C è un
sottoinsieme delle parole composte da due simboli binari
DECODIFICA
La decodifica di una informazione codificata in precedenza é una
corrispondenza g : C I
14
La funzione di co-decodifica
• La funzione f può essere descritta in modo
estensionale, cioè ad ogni simbolo di I si fa
corrispondere un simbolo di C (vedi esempio
dei mezzi di locomozione)
• La funzione f può viceversa avere una
rappresentazione intensiva, come ad esempio il
cifrario di Cesare
15
Cifrario di Cesare: codifica intensiva
• Il cifrario di Cesare, usato nei tempi dell'antica
Roma, aveva la seguente funzione di codifica:
f: i  i+3(modulo 26) i=0,1..25
dove al numero 0 corrisponde la lettera a, 1 a b ecc.
• Secondo tale codice, la parola "babbo" é
codificata come "edeer" , perché b  b+3=e
ecc;
16
Criteri di valutazione di una
codifica
• Economicità: sono considerate migliori rispetto a
questa caratteristica le codifiche che utilizzano pochi
simboli.
• Semplicità di codifica e decodifica: é auspicabile poter
trasformare un linguaggio da un codice all'altro in modo
efficiente
• Semplicità di elaborazione: sono preferibili le
codifiche che consentono di eseguire le operazioni
definite sui dati in modo agevole (ad esempio,
sostituendo ai simboli arabi i simboli dei numeri romani,
"saltano" il meccanismo del riporto e della
17
posizionalità).
Sistemi posizionali (def)
Un sistema numerico posizionale in base b , ovvero basato
su un alfabeto S di b simboli distinti, consente di esprimere
un qualsiasi numero naturale N di m cifre, mediante la:
m 1
i
N   cib , ci  S
i 0
Ad esempio, nel sistema decimale (b=10,S=0,1,..9), la
sequenza N10= 284 può essere espressa come:
2x102+8x101+4x100
18
Riassumiamo:
• b è la base, cioè il numero di simboli diversi nell’alfabeto S (in
base 10 il numero di simboli è 10, e l’alfabeto dei simboli è S
={0,1,2,3,4,5,6,7,8,9}
• Nb indica un numero espresso in base b
• Quindi ad esempio 1010 e 102 hanno significato diverso anche se
le sequenze di simboli sono le stesse (1 seguito da 0)!!
• Ci dovremo dunque occupare di come tradurre una codifica in
un’altra codifica, o di come interpretare una stringa di simboli
una volta che ci venga detto il codice utilizzato per generarla
• Esempio:
– case
IT
ENG
19
20
Codice binario
• Codice binario: un codice posizionale costituito dai soli simboli 0 ed 1.
•
•
•
•
Quindi, b=2, S ={0,1}
I simboli 0 ed 1 prendono il nome di bit, una contrazione per
"binary digit".
Perchè il codice binario viene utilizzato nel progetto di circuiti
digitali?
George Boole dimostrò come la logica possa essere ridotta ad
un sistema algebrico molto semplice, che utilizza solo un
codice binario (zero e uno, vero e falso).
Il codice binario fu trovato particolarmente utile nella teoria
della commutazione (Shannon) per descrivere il
comportamento dei circuiti digitali (1=acceso, 0=spento).
21
..ai tempi di Shannon i commutatori telefonici erano
reti di rélais (interruttori)
Rélais aperto (non
passa segnale)
Rélais chiuso (il
segnale passa)
x variabile che descrive lo stato del rélais
x assume valori in {0,1}
Shannon introdusse l’alfabeto binario per descrivere
22
lo stato dei rélais
Grazie all’algebra di Boole (che vedremo in seguito)
non solo lo stato di un rélais, ma un intero circuito
si può descrivere mediante una espressione algebrica
xy
Il segnale passa
x
y
solo se sia x che
y sono 1, cioè i
I moderni componenti digitali hanno un funzionamento
rélais
che approssima quello del rélais: il due
loro stato
puòsono
essere
chiusi
descritto xda una variabile binaria, cioè
che assume solo
xy
I valori 0 o 1 (variabile booleana,
da Boole)
y
Il segnale passa se
x o y sono “1” cioè,
chiusi
23
Codici binari
• L’alfabeto binario può essere usato per rappresentare lo
STATO di un circuito, e, come vedremo, anche le sue
funzioni
• Inoltre l’alfabeto binario può essere utilizzato per
codificare l’informazione che viene elaborata da un
circuito
• Codici binari sono tutti quelli che usano un alfabeto
binario per codificare l’informazione
• Informazione: numeri e simboli
• Cominciamo con i numeri: i codici saranno diversi a
seconda che si vogliano rapprsentare numeri naturali, interi,
reali..
24
Riassumiamo
• Un alfabeto binario può essere usato per
rappresentare lo stato di un componente digitale
(aperto/chiuso, acceso/spento)
• Variabili binarie (booleane) ed un insieme di
operatori algebrici possono essere usati per
esprimere mediante espressioni algebriche la vista
comportamentale di un circuito (xy)
• Infine, possiamo utilizzare codici binari per
rappresentare le informazioni che entrano, vengono
elaborate, ed escono in un circuito digitale (ad
esempio gli addendi da sommare in un sommatore, ed
il risultato della somma)
25
1.Rappresentazione
dell’informazione numerica
Rappresentzione dei numeri
naturali (= interi non negativi)
26
Rappresentazione binaria di numeri
naturali
Un numero naturale
booleano di n bit può essere
rappresentata mediante la:
N

i  0..n1
ci 2i , ci  0, 1
Il bit c0 , viene detto LSB (less signifying bit) mentre cn-1
viene detto bit più significativo , o MSB.
27
Cambiamenti di base e
artimetica in base b
•Le regole di codifica, di cambiamento di base e di
calcolo variano a seconda che si vogliano
rappresentare:
–Numeri Naturali
–Numeri Interi
–Numeri decimali in virgola fissa e mobile
•Tuttavia tali regole restano le stesse
indipendentemente dalla base!
28
Per ogni insieme di numeri (naturali,
interi e reali) vedremo:
•
•
•
•
Modalità di rappresentazione in base b
Trasformazione da una base a ad una base b
Aritmetica nella base considerata
Perché ci occupiamo di basi diverse da 2, se i circuiti
digitali usano un alfabeto binario?
• Perché le informazioni vengono manipolate da altri
dispositivi (es. tastiere e stampanti) che usano altri
codici. Inoltre nei linguaggi di programmazione i
numeri possono essere codificati in codici diversi (es.
esadecimale), e vengono poi “tradotti” in binario
29
Cambiamento di base per i numeri
naturali
• Problema : convertire un numero N
espresso in base a Na in un numero N’
espresso in base b: N’b
30
Conversione di Base (2)
• Metodo polinomiale: usare l’espressione:
n 1 i
N a   ci a ci  S a
i 0
31
Metodo polinomiale
Si esprime il numero Na come un polinomio,
usando i numeri dell’alfabeto b nel
polinomio
Si valuta il polinomio usando l’aritmetica in
base b
10112  1  23  0  22  1  21  1  20 
8  2  1  1110
32
Conversione di base
• Metodo iterativo:
1. Si divide N per b (b va espresso in base a e la divisione va fatta in
base a), sia Q il quoziente e r il resto. r è la cifra meno significativo di
N’b, poiché r èb
2. (finché Q>0) ripeti:
esegui Q/b : quoziente=Q’ resto=r’
Q’Q N’b r’ N’b
Esempio: 2310=101112 (a=10 e b=2)
N=23
Q=
r=
11
1
5
1
2
1
1
0
0
1
MSB
Nota: divido per 2 con l’aritmetica decimale. (2 espresso con codice
binario è la stringa 10!!!)
33
Osservazioni
• Il risultato si ottiene affiancando a sinistra le cifre che
rappresentano i resti delle divisioni per b in base a.
• Questi resti saranno sicuramente <b (ad esempio se b è 3, e
divido Na per 3, i resti possibili saranno 0,1 o 2)
• Le divisioni vanno fatte nella “matematica” di a, b va espresso
in base a, ed i resti che si accumulano sono in base a. Tutto ok se
a>b!! Ma..
• Ma che succede se la base di arrivo è> di quella di partenza??
(ad esempio, a=10 e b=16)
• La base sedici utilizza 16 simboli, 0 1 2 3 4 5 6 7 8 9 A B C D E
F, perciò “16” si rappresenta col simbolo F
• Ma le divisioni vanno fatte in base 10, quindi F16=1610
• Inoltre i resti, pur essendo <16, risulteranno espressi in base 10
• Quindi alla fine ogni singolo resto va ri-espresso nella base di
34
arrivo,cioè 16 (quindi se nell’ i-esimo passo r=11, devo
trasformarlo in B)
Esempio 2 (da base 10 a base 16)
1) 317 : 16
2) 19:16
Q=19 , r1=1310
Q=1 r2=3
1310=D16 (LSB)
310=316
3) 1:16
Quindi
31710=13D16
Dividere 31710 per 1610
notate che 1610= F16
La base di arrivo va convertita
nella base di partenza!!
Q=0 r3=1 110=116
NO TATE che, nell’algo ritm o so pr a descritto , la
d ivisi one va es eguita in base a (cioè n el la base del
nume ro di partenza). Se a10, qu esto può risult are
com plicato.
35
Provate!!
• 52110 in base 12 = ???
• 0 1 2 3 4 5 6 7 8 9 10 A B
36
Esempio 3 (se la base di
partenza non è 10)
• Convertire il numero 102202 da base 3 a base 5
• Due strade :
a) eseguire 1022023 : 123 (Notate: 123=105=510)
Dovrei effettuare la divisione con aritmetica in base 3
 DIFFICILE!!!
b) (più semplice) convertire 102202 in base 10 (metodo
polinomiale) e poi convertire il risultato in base 5 (resti)
102202 3 = 35 + 233 + 232 + 2 = 317 10
col procedimento dell'esempio precedente 317 10 :5 ecc.
Si ottiene 317 10 = 2232 5
37
Conversioni da base b a base
• Prop. :
lavorando in aritmetica in base b si ha che
n
b
1) nm-1 … n1 n0 DIV bi = nm-1 … ni r= ni-1 … n0
2) nm-1 … n1 n0 MOD bi = ni-1 … n0
(r = resto, MOD = modulo)
Es: 35310 DIV 100 (102)=35 (r=310)
10112 DIV 2(21) = 101 (r=1)
Da ciò :
• Conversione da base 2 a base 2n : considera i bit a n-uple
partendo dal meno significativo e traducile in base 2n
Esempio 3 : convertire 100111101 da base 2 a base 4=22
1 00 11 11 01 2 = 1 0 3 3 1 4
38
Esempio
• Converti 101001101101 da base 2 a base 8 e 16
• 8=23 16=24
• Prima conversione: dividi in triple e converti 101 001 101 101
5 1 5 5 dunque 51558
• 1010 0110 1101  A 6 D dunque A6D16
• Notate: nel dividere in gruppi da “k” bit il gruppo di bit più
significativi potrebbe avere meno di k bit se la stringa di
partenza non ha m=nk bit; in tal caso vanno aggiunti degli zeri
• Es: converti 1001101101 da base due a base 8: 001 001 101 101
39
ARITMETICA IN BASE b PER I
NATURALI
• Tutte le operazioni vengono eseguite come in
base 10, ma modulo b ( Es.: ( 1 + 1 ) 2 = 10
2 ) e quindi anche i riporti e i prestiti agiscono
modulo b.
40
Somma
In base 2 si ha:
0+0=0, riporto=0
0+1=1+0=1. rip=0
1+1=0, rip=1
Esempio: sommare in base 2 i numeri 1001 e 111
1001 +
111 =

10000
41
Sottrazione
• Sottrazione:
Differenza
Prestito
0-0
0
0
0-1
1
1
1-0
1
0
1-1
0
0
• Se c’è un prestito (borrow) e il bit adiacente è un 1, questo
viene modificato in uno zero
• Se c’è un prestito (borrow) e il bit adiacente è uno 0,
questo è modificato in 1, e così tutti i bit successivi, finché
non si incontra un bit=1. Questo viene posto=0, e si
ripristina il processo di sottrazione
42
Sottrazione (2)
• Esempio (l’avanzo si propaga verso sinistra!!):
011
01011
11000
101000
-10001
- 011001
00111
001111
(24-17=7)
(40-25=15)
43
Moltiplicazione
•
•
•
•
Complessa
Funziona con prodotti parziali
Slittamento dei prodotti parziali
Somma prodotti parziali
44
Esempio
•
1011 Moltiplicando (11 dec)
•
x 1101 Moltiplicatore (13 dec)
•
1011 Prodotti parziali
•
0000 Nota: se il Mt=1 COPIA Md
• 1011
(slittando il valore)
• 1011
altrimenti prod_parz=0
• 10001111 Prodotto (143 dec)
• Nota: il risultato ha lunghezza doppia!
45
Divisione
• Più complessa della moltiplicazione
• In particolare per numeri negativi
• In dettaglio nel corso di Arc. Elab. (II sem)
46
Divisione per Interi senza segno
1101
1011 10010011
1011
001110
Resti parziali
1011
001111
1011
100
Divisore
Quoziente
Dividendo
Resto
47
Lunghezza di parola: di quante cifre
in base b abbiamo bisogno per
rappresentare un numero Nb?
• Nota: Un elaboratore lavora con “parole” (stringhe binarie) di
lunghezza fissa (diciamo W ). La dimensione massima e minima
dei numeri rappresentabili dipende dalla lunghezza di parola. In
base due, posso rappresentare numeri naturali fra 0 e 2W-1
Quindi:
• se un numero è codificato con m <W bit dobbiamo inserire in
testa (W-m) zeri non significativi
• se un numero è codificato con m> W bit : dobbiamo
considerare solo le W cifre meno significative del numero
(situazione di errore detta overflow)
48
Rappresentazione
dell’informazione numerica
2) Rappresentazione dei
numeri interi (positivi e
negativi)
49
RAPPRESENTAZIONE DEGLI
INTERI POS E NEG
• Rispetto ai naturali, il problema è la rappresentazionedel segno.
• Esistono tre modalità di rappresentazione:
– in modulo e segno,
– in complemento a uno e
– in complemento a due.
• I primi due rendono le operazioni di somma e sottrazione delicate
(sono necessari controlli preliminari sul segno e sui valori assoluti
degli operandi)
• Col secondo, invece, la sottrazione si esegue semplicemente come
somma dell’opposto (a patto di ignorare l’eventuale overflow
derivante dalla somma di numeri negativi).
50
Rappresentazione con modulo e
segno
• Data una sequenza di simboli cn-1cn-2..c0,
cn-1 rappresenta il SEGNO e non concorre a rappresentare il valore
assoluto del numero
• 1011 - 011  -310
• Quindi se ho n bit, uno va “perso” per codificare il segno. In
valore assoluto, con n bit, rappresento un range di numeri da –
(bn-1 – 1) a +(bn-1-1)
• Es con n=4 min 1111= -111=-7 e max 0111=+7
51
Rappresentazione in complemento
a 2 (Ca2):
L’espressione per rappresentare col metodo polinomiale
un intero N in Ca2 in base b è:
2N
= -bn-1c n-1+
n 2 i
 b ci
i 0
, ci  (0,1)
52
Esempi (in base 2 e con n=8)
•
•
•
•
•
•
•
+3 = 00000011
+2 = 00000010
+1 = 00000001
+0 = 00000000
-1 = 11111111
-2 = 11111110
-3 = 11111101
53
Verifica
• Il digit più significativo non ha valore i segno
ma concorre al calcolo del numero!!
Applicando la formula, si ha:
11111101 -1  27  1  26  1  25  1  24  1  23 
1  22  1  20  128  125  3
54
55
Descrizione geometrica della
rappresentazione di interi in Ca2
56
Range dei Numeri in Ca2 (max e min
interi rappresentabili con W cifre)
• 8 bit (Ca2)
• +127 = 01111111 = 27 -1
• -128 = 10000000 = -27
• 16 bit (Ca2)
• +32767 = 011111111 11111111 = 215 - 1
• -32768 = 100000000 00000000 = -215
• Il più grande numero positivo ha il primo bit
0 e tutti gli altri 1. Il più grande numero
negativo (in valore assoluto) ha il primo bit
1 e tutti gli altri zero
57
Range di rappresentazione
• In generale con n bit, il range va da
2n-1 -1 a -2n-1
• E in base b2?
58
•
•
•
•
Complemento a 2
Proprietà-benefici:
Rappresenta i numeri da -2n-1 a +2n+1
Una sola interpretazione per “0”
Un numero negativo si esprime in
complemento a 2 invertendo i bit del
corrispondente numero positivo, e poi
sommando 1 (segue dimostrazione)
• Regola della sottrazione in Ca2:
N1-N2=N1+not(N2)+1
59
Artimetica dei numeri interi in Ca2
• Il vantaggio è che somma e sottrazione si
eseguono (quasi) nello stesso modo (mentre con
la rappresentazione col segno devo considerare
separatamente la parte della stringa che
rappresenta il numero, ed il bit di segno, ed
eseguire i calcoli in modo diverso a seconda dei
casi)
60
Sottrazione in complemento a 2
• Sia A un intero binario espresso in complemento a 2:
n 2 i
n

1
N=  2
cn1   2 ci
i 1
Invertiamo tutti i bit di N e sommiamo 1:
n 2 i
n

1
N '  N  1  2
cn1  1   2 ci
i 0
Si dimostra che N’= - N !!!! Ne consegue:
2 ( N1 N2)  2 ( N1 N2  1)
61
Dimostrazione
• -N2=N2+1 N2+N2+1=0
N2+N2+1=
n 1
( 2
n 2 i
n 1
pn 1   2 pi )  ( 2
i 1
 ( pn 1  pn 1 ) 2
n 1
n 2 i
pn 1   2 pi  1) 
i 1
n2
 1   2i ( pi  pi ) 
i 0
1
n2
 2 n 1  1   2i  2 n 1  1  ( 2 n 1  1)  0
i 0
62
Sottrazione in Ca2
• Quindi, per eseguire una sottrazione in binario
fra interi rappresentati in complemento a 2,
basta sommare al minuendo il complemento
del sottraendo e sommare 1
63
Corollario (-N=N+1)
• Per trasformare un numero negativo –N da base 10
a base 2 in Ca2:
1) Applicare il metodo polinomiale a N come se fosse
un numero naturale (es. se –N è -8, ricavare la
rappresentazione di 8: 1000)
2) Se il MSB è zero, la rappresentazione ottenuta è la
stessa in Ca2. Altrimenti, si aggiunga uno zero a sinistra
(nell’esempio, +8 in Ca2 è 01000)
3)Si complementano tutti i bit di +N e si somma 1
(nell’esempio, si ottiene 10111+1=11000 che è proprio
-8 (-16+8=-8)
64
3) Rappresentazione dei numeri
Reali
Virgola fissa e mobile
65
3.1) Numeri reali in virgola fissa
• Il problema aggiuntivo è la rappresentazione
della parte intera e di quella frazionaria.
• Abbiamo sempre un sistema posizionale (in base
b  2). I primi m bit rappresentano la parte intera,
i successivi n la parte frazionaria.
n i
cm 1....c0 c1c2...c n   cib
parteintera parte frazionaria i m 1
• con
ci  { 0 , … , b-1 }
66
Precisione
NOTA: la precisione con cui i numeri frazionari
possono essere espressi è finita e predeterminata
perchè questi devono essere memorizzati in un
determinato spazio di memoria
2  1.141421356
67
Cambiamento di base
Trasformare <Ni, Nf >a in <Ni , Nf >b, Ni indica la
Parte Intera, Nf indica la Parte Frazionaria, e, ad
esempio, Nia indica la parte intera di N in base a.
Riserva m bit per la parte intera (P.I.) e n bit per la parte
frazionaria (P.F.) ( m e n fissati)
68
Conversione di base
• Metodo polinomiale (da base b a base 10)
n i
cm 1....c0 c1c2...c n   cib
i

m

1
parteintera parte frazionaria
Es: 1011,011 =
3
2
1
0

1
1 2  0  2  1 2  1 2  0  2
 1  2 2  1  2 3  11  0,25  0,125  11,375
69
Conversione di base (da base 10 a b)
• Metodo iterativo, parte intera: come per i numeri
interi (divisioni ripetute di Nia per b, nell’aritmetica in
base a)
• Metodo iterativo, parte frazionaria
1. Si moltiplica Nfa per b (sempre con l’aritmetica di a!!) . Il
prodotto sia p=pi,pf (es 0,46)
pi è la cifra più significativa di N’fb (in base b!!).
2. (finché pf=0) esegui:
pfb = p’i,p’f
N’f = N’fp’i (concatena la cifra p’i a destra di N’f)
p’fpf
70
• NOTA: Il processo può o meno terminare (pf può non essere mai
Conversione di base (metodo
iterativo, parte frazionaria)
• Esempio
(0,625)10=(0,N’f)8 0,6258=5,00 N’f=5
(0,23)10= (0,N’f)2 0,23 2=0,46 N’f=0
0,46 2=0,92 N’f=00
0,92 2=1,84 N’f=001
0,84 2=1,68 N’f=0011…
(N’f)2=0011
71
Esempio 2 :
convertire 17,416 in base 2 con 8 bit sia per P.I. che per P.F.
1. converti parte intera : 17 10 = 10001 2
2. converti parte frazionaria
0,416 * 2 = 0,832
0,832 * 2 = 1,664
0,664 * 2 = 1,328
0,328 * 2 = 0,656
0,656 * 2 = 1,312
0,312 * 2 = 0,624
0,624 * 2 = 1,248
0,248 * 2 = 0,496
da cui
da cui
da cui
da cui
da cui
da cui
da cui
da cui
P.I. = 0
P.I. = 1
P.I. = 1
P.I. = 0
P.I. = 1
P.I. = 0
P.I. = 1
P.I. = 0
Perciò 0,416 10 = 0,01101010 2
17,416 10 = 00010001 , 01101010 2
P.F. = 0,832
P.F. = 0,664
P.F. = 0,328
P.F. = 0,656
P.F. = 0,312
P.F. = 0,624
P.F. = 0,248
P.F. = 0,49
72
Precisione in virgola fissa
N.B.: nell’esercizio precedente la versione binaria è
un'approssimazione del numero decimale originale.
Infatti (passando di nuovo da base 2 a base 10 col metodo
polinomiale):
10001,0110101 2 = 24 + 1 + 2-2 + 2-3 + 2-5 + 2-7 =
17,4140625 10
(anziché 17,416)
Problema: l'intervallo dei reali rappresentabile è piccolo e con
approssimazioni grossolane
Esempio 2 : avendo a disposizione 32 bit e assegnandone 20
per la P.I. e 12 per la P.F. si ha (in rappr. con modulo e segno)
a) P.I.  {- 2-19 + 1 , … , 219 - 1 } = { -524287 , … , 524287 }
b) per la P.F si hanno a disposizione solo 3 o 4 cifre
frazionarie (infatti 212 = 4096 )
73
3.2) Rappresentazione in virgola
mobile
Un reale r è rappresentato dalla terna
< s , m , e > dove
r = (–1)s · m · be
e gli elementi della terna sono chiamati rispettivamente
s= bit di segno ,
m= mantissa (o significante), espressa come un numero
naturale in base b
e = esponente , espresso in CaN (complemento a N).
74
Forma Normalizzata
Tipicamente si adotta una forma normalizzata (tranne
che per lo zero) in cui la mantissa è tale che :
1. la sua parte intera è nulla
2. la sua parte frazionaria inizia con una cifra non
nulla (es 0,10112)
Banalmente < s , m , e > soddisfa ciò se e solo se
b-1  m < 1 .
Es: Se b=10 m  [0,1 1)
75
Forma Normalizzata ((2)
• Quindi, adottando la rappresentazione normalizzata,
r = (–1)s · 0,m · be
dove:
• s è il bit di segno della mantissa
• m ( m è un intero ) rappresenta la parte frazionaria del
numero normalizzato (quindi la mantissa è un intero
rappresentato con bit di segno)
• e è l'esponente, rappresentato in complemento a N
(ad esempio, in complemento a 2)
76
CAMBIAMENTO di BASE in
virgola mobile
Trasformare Na: < s , ma , ea >
in Nb: < s , mb , eb >
1. trasforma la tripla < s , ma , ea > in un numero
s
e
in virgola fissa (1)  0, m  a =(h,k)a
2. applica il procedimento per numeri in virgola
fissa: (h,k) a ottenendo ( h , k) b
3. Passa di nuovo dalla forma in virgola fissa a
quella in virgola mobile. mb e eb sono la
mantissa e l'esponente normalizzati di (h , k) b77
Esempio
Nel seguito assumeremo di avere 1 bit per il segno, 8
per la mantissa e 4 per l'esponente.
Esempio 3: convertire in base 2 il numero
<+,0,9375,-1>:
1. Trasformo Na in virgola fissa:
-1
<+,0,9375,-1>=0,9375x10 =0,09375 10
2. applico il procedimento iterativo per la P.F.,
ottenendo:
0,09375 10 = 0,00011 2
3. Trasformo Nb in virgola mobile : 0,112-3
4. la rappresentazione cercata, in forma di tripla, è:
2
< 0 , 11000000 2 , 1101 >
(nota: -3 in complemento a 2 è appunto 1101)
78
Range dei numeri in v.m.
• Supponiamo di avere M bit di mantissa e E di
esponente
• La mantissa va da -0,11…1 a -0,10..0 (M bit
dopo la virgola) per i numeri negativi e da
+0,10..0 a +0,11..1 per i positivi
• L’esponente, in Ca2, va da -2E-1 a +2E-1-1
79
“Range” della rappresentazione in
v.m. (2)
Mettendo assieme :
2 E1
2 E1 1
,0,1.....1  2
1. i numeri positivi sono [ 0,1  2
]
M
2.i numeri negativi sono
2 E1 1
E1
0,1......1
2
,0,1

2
[
]
M
80
Esempio
• Con 4 bit di mantissa, il range della mantissa (in
valore assoluto) è:
[1000,1111] in decimale: [0.5, 0.875]
• Con 3 bit di esponente in Ca2, il range degli
esponenti positivi è: [000,011] cioè [0,+3]
esponenti negativi [100,111] cioè [-4,-1]
-0,875x23
-0,5x2-4
0,5x2-4
0,875x23
0
81
Relazione fra numero di bit di M ed E (a parità
di M+E)
0,5x23
E=4 e M=4 bit
82
Relazione fra numero di it di M ed E
E=3 M=5
83
Precisione e Ampiezza
Come si vede, all’aumentare del numero di
bit della mantissa aumenta la precisione
della rappresentazione (diminuiscono
gli intervalli fra numeri adiacenti),
mentre all’aumentare del numero di
bit dell’esponente aumenta l’ampiezza del
campo dei numeri rappresentabili.
Occorre dunque trovare un compromesso.
84
STANDARD IEEE
Per uniformare la gestione della rappresentazione in
virgola mobile nei vari sistemi digitali (ad evitare cioè
che gli stessi dati elaborati su sistemi digitali diversi
diano risultati diversi) l’IEEE ha emesso degli
standard di rappresentazione.
La rappresentazione utilizza una polarizzazione, o
bias, cioè un valore costante che viene sommato
all’esponente e, per ottenere un esponente
polarizzato.
Es. IEEE 724 a 32 bit: n=(s)-1x0,mxb(e-127)
85
Standard IEEE
NaN è lo standard di rappresentazione di “Not a Number”.
Inoltre vengono mostrate le convenzioni di rappresentazione
per 0 e per infinito.
86
87
Es: Conversione in virgola mobile
•
•
Conversione in virgola mobile del numero -11,0625
utilizzando una rappresentazione con 1 bit di segno, 8 bit di
mantissa e 4 di esponente in complemento a 2.
Passo 1. Si converte il numero da decimale a binario
1.a) Conversione parte intera (divisioni successive per b(2) in
base a(10)
11: 2
5 1
2 1
1 0
0 1
Quindi (11)10 = (1011)2
88
Conversione virgola mobile
1b) Conversione parte decimale
0.0625 x 2 = 0.125
0.125 x 2 = 0.25
0.25 x 2 = 0.5
0.5
x 2 = 1.0
Quindi (0.0625)10 = (0.0001)2
da cui (11.0625)10 = (1011.0001)2
89
Conversione virgola mobile
• Passo 2. Determinazione del segno
-11.0625 è negativo quindi S=1
• Passo 3. Determinazione della mantissa
La mantissa contiene tutte le cifre significative del numero, a
partire dall’1 più significativo, eventualmente trascurando le
meno significative se il loro numero è maggiore del numero di
bit a disposizione
Quindi M = 10110001
che, per definizione, rappresenta il valore 0.10110001 (si
sottintende che la virgola sia posizionata immediatamente a
sinistra della cifra più significativa)
90
Conversione virgola mobile
• Passo 4. Determinazione dell’esponente
– Dalla definizione della rappresentazione in virgola mobile un
numero n è uguale a:
n = S x M x 2E
– Poiché una moltiplicazione per una potenza positiva della
base equivale ad uno spostamento verso destra della virgola
di un numero di posizioni pari all’esponente, e poiché il
numero da rappresentare ha la virgola 4 posizioni più a destra
rispetto al numero rappresentato dalla sola mantissa,
l’esponente dovrà essere uguale a 4.
1011,0001 -> 0,10110001
91
Conversione virgola mobile
• In complemento a due su 4 bit, rappresentazione con cui posso
rappresentare i numeri interi relativi da -8 a +7, 4 è rappresentato
da 0100
• Infatti, poiché 4 un numero positivo, non lo devo complementare
e lo rappresento come il corrispondente numero naturale.
• Quindi la rappresentazione di -11.0625 in virgola mobile, con 8
bit di mantissa, 4 di esponente e 1 di segno, è la seguente
S=1 M=10110001 E=0100
92
Aritmetica in VM
Moltiplicazione (in base b )
< s 1 , m1 , e 1 > * < s 2 , m2 , e 2 > = < s , m , e >
dove
0 se s1 = s2
1. s =
1 altrimenti
2. m ed e sono la mantissa e l'esponente normalizzati
di m1 · m2 · b e1 + e2
N.B. : attenzione all'overflow degli esponenti!!
e1e2
Analoga è la formula per la divisione: m1  m2b
.
93
Esempio
Eseguire in base 2 18 * -0,06640625
< 0 , 10010000 , 0101 > * < 1 , 10001000 , 1101 > =
< 1 , 10011001 , 0001 >
Il risultato, convertito in base 10, è correttamente
– 1,1953125
94
Somma
Somma
< s 1 , m1 , e 1 > + < s 2 , m2 , e 2 > = < s , m , e >
-se e1 = e2
s1
s =
s2
se ( –1 ) s1 · m1  ( –1 ) s2 · m2
altrimenti
m ed e sono le normalizzazioni di m’ ed e’ definiti come :
(i) e = e1
(ii)m =
m1 + m 2
se s1 = s2
| m1 – m 2 |
altrimenti
95
Somma (2)
altrimenti (sia e1 < e2 )
slitta a destra m1 di e2 – e1 posizioni (inserendo 0 a
sinistra)
- porta così i numeri allo stesso esponente
- procede come al punto precedente
96
Esempio 1
• <+,1100,001> + <-,1111,011>
1. s= - perché e1<e2 (+1<+3)
2. Sposta mantissa m1 di due posizioni a destra e
aumenta l’esponente di due, poiché (e2-e1)=2
3. m=|m1-m2| = (1111-0011)=1100
4. Poiché m è normalizzata, non c’è altro da fare.
Il risultato è <-,1100,011>
97
Esempio 2
eseguire in base 2
18 – 100
1810=0001001020=0,1001000025
10010=0110010020=0,110010027
1. Esprimi in forma
normalizzata
< 0 , 10010000 , 0101 > – < 1 , 11001000 , 0111 >
=(e1=+5, e2=+7, e2 – e1=2)
2.Confronta esponenti
< 0 , 00100100 , 0111 > – < 1 , 11001000 , 0111 >
=< 1 , 10100100 , 0111 >
3.Allinea esponenti e slitta mantissa
- 0,1010010027 = - 0101001020 = – 82
4. Risultato
N.B. : nell'operazione di shift ci può essere perdita di
cifre significative !!
98
Scarica

Rappresentazione dell`informazione numerica