CORSO DI CALCOLATORI ELETTRONICI I CdL Ingegneria ... · » un numero è rappresentato da una...
Transcript of CORSO DI CALCOLATORI ELETTRONICI I CdL Ingegneria ... · » un numero è rappresentato da una...
DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli
DIS - Università degli Studi di Napoli “Federico II”
CORSO DI CALCOLATORI ELETTRONICI ICdL Ingegneria Biomedica (A-I)
Richiami sulla rappresentazione dei numeri
DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli
Supporti didattici
Fadini – Savy, Fondamenti di Informatica I – III. IV. 1-7
DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli
Per b=2 si ottiene la numerazione binaria» un numero è rappresentato da una stringa di cifre <0> e <1>
Per b=8 si ottiene la numerazione ottale» un numero è rappresentato da una stringa di <0>, <1>, …, <7>
Per b=16 si ha la numerazione esadecimale» un numero è rappresentato da una stringa di cifre
» <0>, <1>, …, <9> e <A>, <B>, …, <F>
Sistema di numerazione posizionale pesata
DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli
7 7 1
127: 8 47 15 : 8
es. N = 127, b = 8
1 7 78 12710 = 1778
Conversione di base per numeri interi
La rappresentazione del numero intero N>0 in base b si ottieneattraverso una successione di divisioni per la base b:
N = Qn b n+1 + Rn bn + … + R1 b + R0
DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli
Rappresentazione in bit
Se per la codifica delle cifre si adopera la numerazione binaria pura, la rappresentazione in bit di un numero è la stessa per qualsiasi base b=2k
es. 1310 = 158 = D16 11012
DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli
Moltiplicazione Parte Fraz. Parte Intera (Ii)
0.875 x 2 0.75 1 ( R1)
0.75 x 2 0.5 1 (R2)
0.5 x 2 0 1 (R3) (0.875)10 = (0.111)2
Conversione di base per numeri frazionari
es. N = 0.875, b = 2
Sia 0 ≤ N< 1 il numero frazionario da esprimere in base b
Si ha:N = I1 b-1 + I2 b-2 + … + In b-n
DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli
Non sempre si ottiene una conversione esatta. Ad esempio, se convertiamo (0.8)10 in binario otteniamo un numero periodico.
Moltiplicazione Parte Fraz. Parte Intera (Ri)
0.8 x 2 0.6 10.6 x 2 0.2 10.2 x 2 0.4 00.4 x 2 0.8 00.8 x 2 0.6 1
.... ... ...
Conversione di base per numeri frazionari
DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli
Moltiplicazione Parte Fraz. Parte Intera (Ri)
0.8 x 2 0.6 10.6 x 2 0.2 10.2 x 2 0.4 00.4 x 2 0.8 00.8 x 2 0.6 1
.... ... ...
Conversione di base per numeri frazionari
Quindi 0.810 = 0.11002 numero periodico in base 2
periodo
DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli
Strategie di codifica
Il numero di bit dipende dalla cardinalità dell’insieme dei numeri che si desidera rappresentare (generalmente 2-4 byte).
La legge di codifica R, scelta in base alla tipologia di numeri che si desidera rappresentare (naturali, relativi, razionali, etc…), mira a semplificare le manipolazioni necessarie per eseguire le operazioni aritmetiche, confronti logici, etc.
numero
rappresentazione X = R ( x )
legge di codifica
DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli
Rappresentazione dei numeri
Il numero degli elementi rappresentabili con n bit è 2n, intervallo [0, 2n – 1].
Ad ogni numero viene associata la stringa di bit che lo rappresenta nel sistema di numerazione binario posizionale.
Esempio: rappresentazione dei numeri naturali su 4 bit ntervallo: [0;15]
0123456789101112131415X10
0000000100100011010001010110011110001001101010111100110111101111X2x
0123456789101112131415
DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli
Proprietà delle stringhe binarie
Estensione a sinistra 510 = 001012
Rappresentazione di
bk: 810 = (23)10 = 010002
del prodotto x * bk: 000112* 010002 = 110002 (k shift-left)
del quoto [x/bk]: [110012 / 001002] = 001102 (k shift-right)
DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli
Overflow - Definizione
I registri di un sistema reale sono finiti in numero e dimensione
Essendo la cardinalità degli insiemi numerici infinita, solo un sottoinsieme finito di elementi può essere rappresentato
Gli operatori aritmetici, chiusi rispetto all’intero insieme, non lo sono rispetto al sottoinsieme di cardinalità finitaEsempio: con 7 bit si codifica il sottoinsieme [0, 127], la somma 100+100 come pure la differenza 5 – 10 generano un overflow (200 e –5 non sono rappresentabili)
Quando si tenta di rappresentare un numero non contenuto nel sottoinsieme si genera un overflow
DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli
L’overflow può essere rilevato attraverso la valutazione del riporto (o del prestito) sull’ultima cifra.
Ad esempio con numeri espressi su 4 bit si ha:
6+8=
--------14
0110+1000=--------1110
14+3=
--------17
1110+0011=--------
10001 overflow
11 –5=
--------6
1011–0101=--------0110
0101×0101=
-------------0101
0000=0101==
0000===-----------0011001
9–7=
--------2
1001–0111=--------0010
overflow
DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli
Rappresentazione in segno e modulo
Codifica in segno e modulo su n bit: un bit (quello piùsignificativo) per il segno ed n-1 per il modulo.
si rappresentano i numeri nell’intervallo [–(2n-1 – 1); 2n-1 – 1]
zero positivo e zero negativo: i numeri rappresentati sono 2n – 1e non 2n;
La legge di codifica è: X = |x| + (2n-1 * sign(x))
DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli
Rappresentazione segno e modulo
n = 4intervallo: [-7;7]Codifica: X= |x| + (23 * sign(x))
X10X2x
151111-7141110-6131101-5121100-4111011-3101010-291001-1
0;80000;10000100011200102300113401004501015601106701117
Occorre lavorare separatamente sul segno e sul modulo: per effettuare la somma tra due numeri di segno discorde, occorre determinare quello con modulo maggiore e sottrarre ad esso il modulo dell’altro. Il risultato deve assumere il segno dell’addendo maggiore in modulo.
DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli
Rappresentazione in complementi alla base
La rappresentazione in complemento a 2 (complemento alla base) su n bit associa:
» al numero positivo x (0 <= x < 2n-1) il numero stesso (cioèX=x);
» al numero negativo x (- 2n-1 < = x <0) il numero X = 2n – |x|;
L’intervallo dei valori rappresentabili con la rappresentazione incomplemento a 2 su n bit è: [–2n-1; 2n-1 – 1]
DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli
Esempio
n = 4Intervallo: [– 8;7]Codifica:
X=x; 0 ≤ x ≤ 7
X= 2n – |x|; – 8 ≤ x ≤ – 1 91001-7
X10X2x
81000-8
101010-6
111011-5
121100-4
131101-3
141110-2
151111-1
000000
100011
200102
300113
401004
501015
601106
701117
Rappresentazione in complementi a 2 su 4 bit
DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli
Proprietà della rappresentazione in complementi alla base
Il primo bit è alto se (e solo se) il numero rappresentato è negativo.
2+– 6=
------------– 4
0010+1010=
------------1100
– 2+– 3=
------------–5
1110+1101=
------------11011
sommamodulo-16
si ignora
DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli
Esempio di moltiplicazione in complementi alla base su 4 bit
si ignorano
0010×1101=
-------------0010
0000=0010==
0010===-------------
0011010
2*– 3=
-------------– 6
prodotto
DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli
Complementi alla base
Complementazione:Complemento alla base di –x: occorre complementare, a partire da sinistra, tutti i bit di x tranne l’uno più a destra ed eventuali zeri successivi.
Poiché –x = 2n – |x| ⇒ y - x = y - 2n + |x| = y + |x| - 2n = | y + |x| |M⇓
L’addizionatore ed il complementatore sono i soli componenti necessari per realizzare le quattro operazioni: somma, sottrazione, moltiplicazione e divisione.
DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli
Data la rappresentazione binaria di x, a partire da sinistra, si complementano tutti i bit che precedono l’ultimo uno più a destra:
610 : 01102
-610 : 10102
510 : 01012
-510 : 10112
110: 00012
-110: 11112.
Esempi di complementazione su 4 bit
DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli
Rappresentazione in complementi diminuiti
ASSOCIA» ai numeri positivi, 0 <= x < 2n-1, il numero stesso (cioè X=x);
» ai numeri negativi, - 2n-1 < x <=0, il numero X = 2n – 1 – |x|;
Intervallo rappresentato: [–(2n-1 – 1), 2n-1 – 1]
Come per segno e modulo, i valori rappresentabili sono 2n – 1 in quanto si ha la doppia rappresentazione per 0
DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli
Esempio: Rappresentazione in complementi diminuiti su 4 bit
n = 4
Intervallo: [ –7; 7 ]
Codifica:
X = x; 0 <= x <= 7
X = 2n – 1 – |x|; – 7 <= x <= – 1
81000-7
X10X1x
91001-6
101010-5
111011-4
121100-3
131101-2
141110-1
0;150000;11110
100011
200102
300113
401004
501015
601106
701117
DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli
Complementi diminuiti: perché?
Il complemento si ottiene, a partire dalla rappresentazione del numero stesso, complementando tutti i bit.
610 : 01102
-610 : 10012
510 : 01012
-510 : 10102
110: 00012
-110: 11102.
DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli
Aritmetica in complementi diminuiti
L’addizionatore (modulo 2n-1) ed il complementatorerappresentano i componenti fondamentali per la realizzazione di tutte le operazioni nell’aritmetica in complementi diminuiti
Il risultato deve essere “corretto” (deve essere aggiunto 1 al risultato):
» se entrambi gli addendi sono negativi (genera un overflow);
» se un addendo è positivo, l’altro negativo e la somma èpositiva (genera un overflow).
L’overflow quindi può essere interpretato come la necessità di effettuare la correzione
DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli
Esempi di somme in complementi diminuiti.
3+– 4=
---------– 1
0011+1011=
---------1110
Somma di un numero positivo con un numero negativo e risultato negativo (non genera overflow)Non necessita alcuna correzione.
– 2+– 3=
---------– 5
1101+1100=
---------11001+
1=---------
1010
Somma di due numeri negativi (genera overflow) Necessita correzione.
5+– 2=
---------3
0101+1101=
---------10010+
1=---------
0011
Somma di un numero positivo e un numero negativo conrisultato positivo (genera overflow).Necessita correzione.
overflow
overflow
DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli
Rappresentazione eccesso-k
Rappresentazione in eccesso-k: metodo per ricondurre i numeri
negativi a positivi.
Tutti i numeri sono traslati verso l’alto di una costante k,
tipicamente pari a k = (bn / 2):
X = R(x) = x + k
DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli
Rappresentazione eccesso-k
La somma va corretta. La moltiplicazione e la divisione sono molto più complesse di quelle per complementi.
Vantaggio: viene conservata la relazione d'ordine sulle rappresentazioni:
x1 > x2 ⇔ X1 > X2
Preferita laddove le operazioni richieste sono solo somme algebriche e confronti logici (è usata, in genere, per la rappresentazione degli esponenti in virgola mobile).
DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli
Rappresentazione in eccesso 8 su 4 bit
n = 4intervallo: [–8; +7]Codifica:
X= x + k; k = 24 / 2 = 24-1 = 23 =8
10001-7
00000-8
X10X2x
20010-6
30011-5
40100-4
50101-3
60110-2
70111-1
810000
910011
1010102
1110113
1211004
1311015
1411106
1511117
DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli
Numeri reali in virgola fissa
Virgola fissa: si rappresentano separatamente la parte intera e la parte frazionaria di un numero reale.
Parte intera e parte frazionaria sono espresse attraverso una delle rappresentazioni viste in precedenza.
La posizione della virgola è fissa e resta sottintesa.
DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli
Numeri reali in virgola fissa
DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli
Numeri razionali: errore di approssimazione
Insieme denso: anche se si sceglie un intervallo limitato non tutti i numeri all’interno di esso potranno essere rappresentati.
Approssimazione: si associa a ciascun numero del suddetto intervallo la rappresentazione del numero “più vicino”, cioèquello che lo approssima (errore di approssimazione)
Underflow: si verifica quando, a causa dell’errore di approssimazione, si rappresenta con zero un numero prossimo a zero
DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli
Numeri reali in virgola mobile
Un numero reale x può essere rappresentato dalla coppia(m,e): x = m*be
dove:
» m è detta mantissa;» e è detto esponente;» b è la base di numerazione adottata.
Il metodo, in questo caso, prende il nome di codifica in virgola mobile.
DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli
Normalizzazione
Per ciascun numero esistono infinite coppie che lo rappresentano:346.09801: (346.09801, 0), (34609801, -3), (0.034609801, 4 ) ecc…
unico rappresentante: si fissa la posizione della virgola subito dopo la prima cifra significativa, ottenendo
(3.4609801, 2)
DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli
Esempio: intervallo di rappresentazione
b =10 4 cifre per la mantissa 2 per l’esponente
[-9.999×1099,-1.000×10-99] ∪ {0} ∪ [+1.000×10-99,+9.999×1099]
0-1 +1
-1.000×10-99 +1.000×10-99
-9.999×1099 +9.999×1099
DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli
Numeri reali in virgola mobile
L’errore assoluto non è costante: la precisione assoluta, molto spinta in prossimità dello zero, diminuisce al crescere del numero» in prossimità dello zero l’errore massimo è pari a 0.001*10-99
1.001*10-99- 1.000*10-99= 0.001*10-99;» in prossimità dell’estremo superiore l’errore massimo è 0.001 *1099
9.999*1099-9.998 *1099=0.001 *1099.
Errore assoluto: piccolo su numeri piccoli, grande su numeri grandi.
Errore relativo: costante su tutto l’asse di rappresentabilità.
DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli
Rappresentazione in Virgola Mobile
DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli
Standard IEEE 754
Hidden bit – non memorizzato1.
DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli
Lo standard IEEE 754 in singola precisione (32 bit) prescrive lerappresentazioni:
Mantissa: Segno e Modulo (1 bit segno e 23 bit per il modulo)Exp: eccesso 127 (8 bit)
8 bit 23 bit
Standard IEEE 754
DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli
Esempio: rappres. in VM IEEE 754 del numero reale -5.12510
510 1012
(0.125)10 (1/8)10 (2-3)10 (0.001)2
(5.125)10 = (5 + 0.125)10 (101.001)2
normalizziamo: 101.001 = 1.01001 x 22
e = 2 ; m = -01001
Standard IEEE 754
DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli
e = 2 ; m = -01001R(e) = 2 + 127 00000010 + 01111111 = 10000001
1 1 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
S EXP MANTISSA
Standard IEEE 754 -5.12510 C0A40000HV.M. IEEE 754
1100 0000 1010 0100 0000 0000 0000 0000
C 0 0A 4 0 00
DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli
~10-308, 10+308~ 10-38, 10+38range decimale~ 2+1024~ 2+128massimo, norm.
-1022, +1023-126, +127range esponente2-10222-126minimo, norm.
5223bit per mantissa118bit per esponente11bit segno
~ 10-324~ 10-45minimo, denom.
Eccesso 1024Eccesso 127rappr. esponente6432bit totali
DOPPIA PRECISIONESINGOLA PRECISIONEVM IEEE 754
Standard IEEE 754