CORSO DI CALCOLATORI ELETTRONICI I CdL Ingegneria ... · » un numero è rappresentato da una...

47
DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli DIS - Università degli Studi di Napoli “Federico II” CORSO DI CALCOLATORI ELETTRONICI I CdL Ingegneria Biomedica (A-I) Richiami sulla rappresentazione dei numeri

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

Rilevazione dell'overflow

DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli

Rilevazione dell'overflow

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

Complementi: riepilogo

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

Overflow e Underflow

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

DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli

0 < Exp < Max qualunque configuraz. di bit±

Normalizzati

0 qualunque configuraz. di bit diversa da 0±

Denormalizzati

0 0±

Zero

111…1 0±

Infinito

111…1 qualunque configuraz. di bit diversa da 0±

Not a Number

Standard IEEE 754