Numeri con segno ed in virgola - Intranet...

50
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Numeri con segno ed in virgola Marco D. Santambrogio – [email protected] Ver. aggiornata al 20 Marzo 2016

Transcript of Numeri con segno ed in virgola - Intranet...

Page 1: Numeri con segno ed in virgola - Intranet DEIBhome.deib.polimi.it/santambr/dida/ieim/2016/doc/lezioni/...• Con 3 bit avremo: 000 +0 001 +1 010 +2 011 +3 100 -0 101 -1 110 -2 111

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Numeri con segno ed in virgola

Marco D. Santambrogio – [email protected]

Page 2: Numeri con segno ed in virgola - Intranet DEIBhome.deib.polimi.it/santambr/dida/ieim/2016/doc/lezioni/...• Con 3 bit avremo: 000 +0 001 +1 010 +2 011 +3 100 -0 101 -1 110 -2 111

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Obiettivi

•  Complemento a due•  Numeri in virgola

2

Page 3: Numeri con segno ed in virgola - Intranet DEIBhome.deib.polimi.it/santambr/dida/ieim/2016/doc/lezioni/...• Con 3 bit avremo: 000 +0 001 +1 010 +2 011 +3 100 -0 101 -1 110 -2 111

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Rappresentazione dei numeri

•  In realtà, una semplice codifica binaria come quella discussa fino ad ora non è sufficiente, per due motivi:§  Numeri negativi§  Numeri con la virgola

•  Per questi numeri vengono utilizzate delle rappresentazioni differenti§  Per esempio “complemento a due” per

rappresentare i numeri negativi

3

Page 4: Numeri con segno ed in virgola - Intranet DEIBhome.deib.polimi.it/santambr/dida/ieim/2016/doc/lezioni/...• Con 3 bit avremo: 000 +0 001 +1 010 +2 011 +3 100 -0 101 -1 110 -2 111

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Stampa caratteri

•  Si scriva un programma in C che stampi a video tutti i caratteri§ Nota: si ricorda che i caratteri sono un

insieme di 256 elementi

4

Page 5: Numeri con segno ed in virgola - Intranet DEIBhome.deib.polimi.it/santambr/dida/ieim/2016/doc/lezioni/...• Con 3 bit avremo: 000 +0 001 +1 010 +2 011 +3 100 -0 101 -1 110 -2 111

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Stampa caratteri

5

Page 6: Numeri con segno ed in virgola - Intranet DEIBhome.deib.polimi.it/santambr/dida/ieim/2016/doc/lezioni/...• Con 3 bit avremo: 000 +0 001 +1 010 +2 011 +3 100 -0 101 -1 110 -2 111

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Stampa caratteri: int8_t

6

Page 7: Numeri con segno ed in virgola - Intranet DEIBhome.deib.polimi.it/santambr/dida/ieim/2016/doc/lezioni/...• Con 3 bit avremo: 000 +0 001 +1 010 +2 011 +3 100 -0 101 -1 110 -2 111

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Numeri negativi

•  Si può pensare di usare un bit per il segno§  “0” identifica “+”§  “1” identifica “-”

•  Gli altri bit vengono usati per codificare il valore assoluto (modulo) del numero

-3 -2 -1 0 1 2 3 4 5 6 7

[-22+1, 22-1][0, 23-1]

7

Page 8: Numeri con segno ed in virgola - Intranet DEIBhome.deib.polimi.it/santambr/dida/ieim/2016/doc/lezioni/...• Con 3 bit avremo: 000 +0 001 +1 010 +2 011 +3 100 -0 101 -1 110 -2 111

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Numeri negativi - problemi

•  Con 3 bit avremo:

000 +0 001 +1 010 +2 011 +3 100 -0 101 -1 110 -2 111 -3

Problemi:n  Il numero 0 ha due

rappresentazionin  Per l’operazione di

somma si deve tener conto dei segni degli addendi

0 0 1 0 + (+2) 1 0 1 1 = (-3) 1 1 0 1 (-5 ERRATO)

8

Page 9: Numeri con segno ed in virgola - Intranet DEIBhome.deib.polimi.it/santambr/dida/ieim/2016/doc/lezioni/...• Con 3 bit avremo: 000 +0 001 +1 010 +2 011 +3 100 -0 101 -1 110 -2 111

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Stampa caratteri: unsigned

9

Page 10: Numeri con segno ed in virgola - Intranet DEIBhome.deib.polimi.it/santambr/dida/ieim/2016/doc/lezioni/...• Con 3 bit avremo: 000 +0 001 +1 010 +2 011 +3 100 -0 101 -1 110 -2 111

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Stampa caratteri: unsigned

10

Page 11: Numeri con segno ed in virgola - Intranet DEIBhome.deib.polimi.it/santambr/dida/ieim/2016/doc/lezioni/...• Con 3 bit avremo: 000 +0 001 +1 010 +2 011 +3 100 -0 101 -1 110 -2 111

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Il fattoriale…

11

Page 12: Numeri con segno ed in virgola - Intranet DEIBhome.deib.polimi.it/santambr/dida/ieim/2016/doc/lezioni/...• Con 3 bit avremo: 000 +0 001 +1 010 +2 011 +3 100 -0 101 -1 110 -2 111

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Il fattoriale: codice

12

Page 13: Numeri con segno ed in virgola - Intranet DEIBhome.deib.polimi.it/santambr/dida/ieim/2016/doc/lezioni/...• Con 3 bit avremo: 000 +0 001 +1 010 +2 011 +3 100 -0 101 -1 110 -2 111

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Proviamo ad eseguirlo…

13

int sono interi con segno

Page 14: Numeri con segno ed in virgola - Intranet DEIBhome.deib.polimi.it/santambr/dida/ieim/2016/doc/lezioni/...• Con 3 bit avremo: 000 +0 001 +1 010 +2 011 +3 100 -0 101 -1 110 -2 111

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Il fattoriale: unsigned int

14

Page 15: Numeri con segno ed in virgola - Intranet DEIBhome.deib.polimi.it/santambr/dida/ieim/2016/doc/lezioni/...• Con 3 bit avremo: 000 +0 001 +1 010 +2 011 +3 100 -0 101 -1 110 -2 111

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Proviamo ad eseguirlo…

15

Page 16: Numeri con segno ed in virgola - Intranet DEIBhome.deib.polimi.it/santambr/dida/ieim/2016/doc/lezioni/...• Con 3 bit avremo: 000 +0 001 +1 010 +2 011 +3 100 -0 101 -1 110 -2 111

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Numeri negativi: Complemento a due

•  Il bit più significativo rappresenta il segno del numero: 0 per i numeri positivi e 1 per i numeri negativi

•  La rappresentazione di un numero positivo si ottiene codificando il valore assoluto del numero con i bit restanti

•  La rappresentazione di un numero negativo si ottiene in tre passi:§  Si rappresenta in complemento a due il numeri positivo

con lo stesso valore assoluto del numero negativo da codificare

§  Si invertono tutti i bit in tale rappresentazione (0→1,1→0)

§  Si somma uno al risultato ottenuto al passo precedente

16

Page 17: Numeri con segno ed in virgola - Intranet DEIBhome.deib.polimi.it/santambr/dida/ieim/2016/doc/lezioni/...• Con 3 bit avremo: 000 +0 001 +1 010 +2 011 +3 100 -0 101 -1 110 -2 111

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Complemento a due

•  Esempio (con 4 bit a disposizione):§  La codifica di +5 è 0101§  La codifica del numero –5 avviene in tre passi:

•  La rappresentazione in complemento a due di +5 è 0101

•  Invertendo tutti i bit si ottiene 1010•  Sommando 1 si ottiene 1011, la rappresentazione

in complemento a due di -5

17

Page 18: Numeri con segno ed in virgola - Intranet DEIBhome.deib.polimi.it/santambr/dida/ieim/2016/doc/lezioni/...• Con 3 bit avremo: 000 +0 001 +1 010 +2 011 +3 100 -0 101 -1 110 -2 111

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Complemento a due

•  Per ottenere un numero con segno data la sua rappresentazione in complemento a due:§  Se il primo bit è 0 il numero è positivo: per

calcolarne il valore assoluto si esegue la conversione da binario a decimale

§  Se il primo bit è 1 il numero è negativo:•  Si ignora il primo bit•  Si invertono i restanti bit•  Si converte il numero da binario a decimale•  Si somma uno al numero ottenuto per ottenere il

valore assoluto del numero negativo

18

Page 19: Numeri con segno ed in virgola - Intranet DEIBhome.deib.polimi.it/santambr/dida/ieim/2016/doc/lezioni/...• Con 3 bit avremo: 000 +0 001 +1 010 +2 011 +3 100 -0 101 -1 110 -2 111

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Complemento a due

•  Esempio: 1011§  Si esclude il primo bit§  Invertendo 011 si ottiene 100 che è codifica di 4§  Va aggiunto 1 per ottenere il valore assoluto 5§  Il risultato è quindi -5

19

Page 20: Numeri con segno ed in virgola - Intranet DEIBhome.deib.polimi.it/santambr/dida/ieim/2016/doc/lezioni/...• Con 3 bit avremo: 000 +0 001 +1 010 +2 011 +3 100 -0 101 -1 110 -2 111

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Complemento a due

•  Con 3 bit avremo:

000 +0 001 +1 010 +2 011 +3 100 -4 101 -3 110 -2 111 -1

Esempi di addizione: 0 0 1 0 + (+2) 1 0 1 1 = (-5) 1 1 0 1 (-3)

0 1 1 1 + (+7) 1 0 1 1 = (-5) 0 0 1 0 (+2)

Nel secondo esempio, l’overflow è ignorato

20

Page 21: Numeri con segno ed in virgola - Intranet DEIBhome.deib.polimi.it/santambr/dida/ieim/2016/doc/lezioni/...• Con 3 bit avremo: 000 +0 001 +1 010 +2 011 +3 100 -0 101 -1 110 -2 111

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

E ora..

•  Quanto fa 0,4 * 20?

21

Page 22: Numeri con segno ed in virgola - Intranet DEIBhome.deib.polimi.it/santambr/dida/ieim/2016/doc/lezioni/...• Con 3 bit avremo: 000 +0 001 +1 010 +2 011 +3 100 -0 101 -1 110 -2 111

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

E ora..

•  Quanto fa 0,4 * 20?

22

Page 23: Numeri con segno ed in virgola - Intranet DEIBhome.deib.polimi.it/santambr/dida/ieim/2016/doc/lezioni/...• Con 3 bit avremo: 000 +0 001 +1 010 +2 011 +3 100 -0 101 -1 110 -2 111

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

E ora..

•  Quanto fa 0,4 * 20?

23

WAT

Page 24: Numeri con segno ed in virgola - Intranet DEIBhome.deib.polimi.it/santambr/dida/ieim/2016/doc/lezioni/...• Con 3 bit avremo: 000 +0 001 +1 010 +2 011 +3 100 -0 101 -1 110 -2 111

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

E ora..

•  Quanto fa 0,4 * 20?

24

Page 25: Numeri con segno ed in virgola - Intranet DEIBhome.deib.polimi.it/santambr/dida/ieim/2016/doc/lezioni/...• Con 3 bit avremo: 000 +0 001 +1 010 +2 011 +3 100 -0 101 -1 110 -2 111

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Numeri in virgola fissa

•  Fino a questo punto abbiamo assunto che §  Un vettore di bit rappresentasse sempre un numero intero§  Eventualmente con segno

•  Tutte le considerazioni fatte fino ad ora e tutti i metodi esposti continuano a valere se si attribuisce ai vettori di bit il significato di numeri in virgola fissa

•  Un sistema di numerazione in virgola fissa è quello in cui: §  La posizione della virgola decimale è implicita §  La posizione della virgola decimale uguale in tutti i numeri

•  La posizione della virgola equivale alla interpretazione del valore intero moltiplicato per un fattore di scala

25

Page 26: Numeri con segno ed in virgola - Intranet DEIBhome.deib.polimi.it/santambr/dida/ieim/2016/doc/lezioni/...• Con 3 bit avremo: 000 +0 001 +1 010 +2 011 +3 100 -0 101 -1 110 -2 111

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Numeri in virgola fissa: fattore di scala

•  Si consideri ad esempio il vettore di k+n bit (k bit per rappresentare la parte intera e n bit per rappresentare la parte frazionaria):

B = bk-1 ... b0,b-1 ... B-n

•  Il suo valore è dato daV(B) = bk-1x2k-1 + ... + b0x20 + b-1x2-1 + ... + b-nx2-n

•  Il fattore di scala che consente di passare dalla rappresentazione intera a quella a virgola fissa è pari a

Sn = 2-n = 1 / 2n

•  Detti VI il valore intero e VVF il valore in virgola fissa di B: VVF(B) = VI(B) x Sn = VI(B) x 2-n

parte frazionaria

26

Page 27: Numeri con segno ed in virgola - Intranet DEIBhome.deib.polimi.it/santambr/dida/ieim/2016/doc/lezioni/...• Con 3 bit avremo: 000 +0 001 +1 010 +2 011 +3 100 -0 101 -1 110 -2 111

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Esempio

•  Si consideri il vettore binario:B = 010.10110

•  Il suo valore in virgola fissa è:VVF(B) = 21 + 2-1 + 2-3 + 2-4 = 2 + 1/2 + 1/8 + 1/16

= 43/16 = 2.6875•  Il fattore di scala da utilizzare per la conversione è:

S5 = 2-5 = 1/32 = 0.03125•  Il valore di B, considerandolo intero è:

VI(B) = 26 + 24 + 22 + 21 = 64 + 16 + 4 + 2 = 86•  Da cui, moltiplicando per il fattore di scala, si ha:

VVF(B) = VI(B) x S5 = 86 x 0.03125 = 2.6875

27

Page 28: Numeri con segno ed in virgola - Intranet DEIBhome.deib.polimi.it/santambr/dida/ieim/2016/doc/lezioni/...• Con 3 bit avremo: 000 +0 001 +1 010 +2 011 +3 100 -0 101 -1 110 -2 111

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Numeri in virgola mobile

•  Codifica in virgola mobile per i numeri in base 10•  Un numero in virgola mobile è composto da diverse parti:•  Si dice normalizzato un numero in cui 1 ≤ M < 10

•  Facilmente estendibile al sistema di numerazione binario•  In un numero binario in virgola mobile e normalizzato

§  La prima cifra della mantissa è sempre 1 (1 ≤ M < 2)§  Tale cifra non viene rappresentata esplicitamente

17101764.3 ×+

Segno Mantissa Esponente

28

Page 29: Numeri con segno ed in virgola - Intranet DEIBhome.deib.polimi.it/santambr/dida/ieim/2016/doc/lezioni/...• Con 3 bit avremo: 000 +0 001 +1 010 +2 011 +3 100 -0 101 -1 110 -2 111

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Numeri in virgola mobile – Valori rappresentabili

•  IEEE standard: Numeri floating-point in singola precisione

•  L’esponente utilizza la codifica in eccesso 127, e cioè il valore effettivo dell’esponente è pari a (E-127)§  E = 0 e M = 0 Rappresenta lo zero (pos/neg)

§  E = 255 e M = 0 Rappresenta infinito (pos/neg)§  E = 255 e M !=0 NotANumber §  0<E<255 (-1)s x 2(E-127) x (1,M)

(127≤E≤254 esp.positivi 126≤E≤1esp.negativi)

§  E = 0 e M !=0 (-1)s x 2-126 x (0,M) non normalizzati

•  Standard IEEE 32 bit: intervallo rappresentato -1.M x 10-38 ≤ x ≤ +1.M x 1038

•  La precisione consentita è di circa 7 cifre decimali

S E M

1 bit Segno

8 bit Esponente

23 bit Mantissa

29

Page 30: Numeri con segno ed in virgola - Intranet DEIBhome.deib.polimi.it/santambr/dida/ieim/2016/doc/lezioni/...• Con 3 bit avremo: 000 +0 001 +1 010 +2 011 +3 100 -0 101 -1 110 -2 111

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Numeri in virgola mobile: Valori rappresentabili

•  Motivazione della rappresentazione non normalizzata§  E = 0 e M !=0 (-1)s x 2-126 x (0,M) non normalizzati

•  Il valore più piccolo rappresentabile normalizzato è ± 2 1-127 x 1,00…00 = ± 2 –126

•  che espresso in virgola mobile da E=1 e M = 0

rappresentazione non normalizzata E=0 e M != 0Interpretata nel modo seguente:

Valore numerico = ± 2 –126 x 0,……Il più piccolo valore rappresentabile è

± 2 –126 x 0,00…01 = ± 2 –126 x 2 –23 = ± 2 –149

0 - 2 –126 + 2 –126

?

30

Page 31: Numeri con segno ed in virgola - Intranet DEIBhome.deib.polimi.it/santambr/dida/ieim/2016/doc/lezioni/...• Con 3 bit avremo: 000 +0 001 +1 010 +2 011 +3 100 -0 101 -1 110 -2 111

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Come passo da DEC a BIN?

•  Come rappresentiamo il numero 3,37510 in binario?

•  1 bit di segno•  8 bit di esponente•  23 bit di mantissa

31

Page 32: Numeri con segno ed in virgola - Intranet DEIBhome.deib.polimi.it/santambr/dida/ieim/2016/doc/lezioni/...• Con 3 bit avremo: 000 +0 001 +1 010 +2 011 +3 100 -0 101 -1 110 -2 111

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

3,37510 in binario: segno

•  La ricerca del segno è semplice§  0 per indicare un segno +§  1 per indicare un segno -

32

Page 33: Numeri con segno ed in virgola - Intranet DEIBhome.deib.polimi.it/santambr/dida/ieim/2016/doc/lezioni/...• Con 3 bit avremo: 000 +0 001 +1 010 +2 011 +3 100 -0 101 -1 110 -2 111

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

3,37510 in binario: mantissa

•  3,37510 è composto da 3 e 0,375§  3 in binario (N>0, divido per 2): 11§  0,375 in binario (N<0, moltiplico per 2)

•  0,375 x 2 = 0,750 e quindi 0 e 0,750•  0,750 x 2 = 1,5 e quindi 1 e 0,5•  0,5 in binario?•  0,5 x 2 = 1,0 e quindi 1 e 0•  0 in binario?... ZERO

•  E quindi 3,37510 è 11.01100…

33

Page 34: Numeri con segno ed in virgola - Intranet DEIBhome.deib.polimi.it/santambr/dida/ieim/2016/doc/lezioni/...• Con 3 bit avremo: 000 +0 001 +1 010 +2 011 +3 100 -0 101 -1 110 -2 111

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

3,37510 in binario: mantissa

•  E quindi 3,37510 è 11.01100…

•  Ricordiamo§  La prima cifra della mantissa è sempre 1

•  Quindi devo normalizzare!§  E come si normalizza?

34

Page 35: Numeri con segno ed in virgola - Intranet DEIBhome.deib.polimi.it/santambr/dida/ieim/2016/doc/lezioni/...• Con 3 bit avremo: 000 +0 001 +1 010 +2 011 +3 100 -0 101 -1 110 -2 111

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Op virgola mobile: Normalizzazione

•  Tutte le operazioni descritte nel seguito operano su numeri normalizzati (1 implicito prima della virgola)

•  Se l’1 implicito manca, la normalizzazione di un numero con mantissa M ed esponente n, si esegue come segue:§  Si fa scorrere verso sinistra la mantissa M

fino al primo uno, compreso; sia k il numero di posizioni di tale scorrimento

§  Si sottrae k all’esponente n

•  Da ricordare:§  Scorrimento a sx equivale a moltiplicazione§  Scorrimento a dx equivale a divisione

35

Page 36: Numeri con segno ed in virgola - Intranet DEIBhome.deib.polimi.it/santambr/dida/ieim/2016/doc/lezioni/...• Con 3 bit avremo: 000 +0 001 +1 010 +2 011 +3 100 -0 101 -1 110 -2 111

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

3,37510 in binario: mantissa normalizzata

•  E quindi 3,37510 è 11.011§  11.011 -> 1.1011 x 21

•  Mantissa = 10110000000000000000000

36

Page 37: Numeri con segno ed in virgola - Intranet DEIBhome.deib.polimi.it/santambr/dida/ieim/2016/doc/lezioni/...• Con 3 bit avremo: 000 +0 001 +1 010 +2 011 +3 100 -0 101 -1 110 -2 111

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

3,37510 in binario: esponente

•  Esponente (eccesso 127) = 127 + 1§  L’uno deriva dalla normalizzazione delle

mantissa: 11.011 -> 1.1011 x 21

37

Page 38: Numeri con segno ed in virgola - Intranet DEIBhome.deib.polimi.it/santambr/dida/ieim/2016/doc/lezioni/...• Con 3 bit avremo: 000 +0 001 +1 010 +2 011 +3 100 -0 101 -1 110 -2 111

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

3,37510 in binario

•  Come rappresentiamo il numero 3,37510 in binario?

•  1 bit di segno: 0•  8 bit di esponente: 10000000 (128)•  23 bit di mantissa:

10110000000000000000000

•  Mettiamo tutti insieme:§  3,37510 = 0 10000000 10110000000000000000000

38

Page 39: Numeri con segno ed in virgola - Intranet DEIBhome.deib.polimi.it/santambr/dida/ieim/2016/doc/lezioni/...• Con 3 bit avremo: 000 +0 001 +1 010 +2 011 +3 100 -0 101 -1 110 -2 111

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni in virgola mobile

•  Le operazioni che si possono compiere su numeri in virgola mobile sono:§  Somma §  Sottrazione§  Moltiplicazione§  Divisione§  Elevamento a potenza §  Estrazione di radice

•  Inoltre sono definite le operazioni di:§  Normalizzazione (già vista)§  Troncamento

39

Page 40: Numeri con segno ed in virgola - Intranet DEIBhome.deib.polimi.it/santambr/dida/ieim/2016/doc/lezioni/...• Con 3 bit avremo: 000 +0 001 +1 010 +2 011 +3 100 -0 101 -1 110 -2 111

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni in virgola mobile

•  L’esecuzione di una operazione in virgola mobile può provocare una eccezione

•  Una eccezione è il risultato di una operazione anomala, quale, ad esempio:§  Divisione per zero§  Estrazione della radice quadrata di un numero negativo

•  Le eccezioni che vengono generate dalle unità aritmetiche in virgola mobile sono:§  Operazione non valida§  Divisione per zero§  Overflow§  Underflow

40

Page 41: Numeri con segno ed in virgola - Intranet DEIBhome.deib.polimi.it/santambr/dida/ieim/2016/doc/lezioni/...• Con 3 bit avremo: 000 +0 001 +1 010 +2 011 +3 100 -0 101 -1 110 -2 111

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Userete ad esercitazione…

41

Page 42: Numeri con segno ed in virgola - Intranet DEIBhome.deib.polimi.it/santambr/dida/ieim/2016/doc/lezioni/...• Con 3 bit avremo: 000 +0 001 +1 010 +2 011 +3 100 -0 101 -1 110 -2 111

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Op virgola mobile: Somma e Sottrazione

•  La somma o sottrazione tra numeri in virgola mobile viene eseguita secondo i seguenti passi:§  Si sceglie il numero con esponente minore §  Si fa scorrere la sua mantissa a destra un numero di bit pari

alla differenza dei due esponenti§  Si assegna all’esponente del risultato il maggiore tra gli

esponenti degli operandi§  Si esegue l’operazione di somma (algebrica) tra le mantisse

per determinare il valore ed il segno del risultato§  Si normalizza il risultato così ottenuto

•  Non sempre quest’ultima operazione è necessaria•  Attenzione!!! Il riporto si può propagare anche dopo la posizione

della virgola

42

Page 43: Numeri con segno ed in virgola - Intranet DEIBhome.deib.polimi.it/santambr/dida/ieim/2016/doc/lezioni/...• Con 3 bit avremo: 000 +0 001 +1 010 +2 011 +3 100 -0 101 -1 110 -2 111

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Op virgola mobile: Moltiplicazione

•  La moltiplicazione tra numeri in virgola mobile viene eseguita secondo i seguenti passi:§  Si sommano gli esponenti e si sottrae 127§  Si calcola il risultato della moltiplicazione delle mantisse §  Si determina il segno del risultato§  Si normalizza il risultato così ottenuto

•  Non sempre quest’ultima operazione è necessaria

•  La sottrazione di 127 dalla somma degli esponenti è necessaria in quanto sono rappresentati in eccesso 127

Ea,127 = Ea + 127Eb,127 = Eb + 127Eaxb,127 = Eaxb + 127 = (Ea + 127) + (Eb + 127) - 127

43

Page 44: Numeri con segno ed in virgola - Intranet DEIBhome.deib.polimi.it/santambr/dida/ieim/2016/doc/lezioni/...• Con 3 bit avremo: 000 +0 001 +1 010 +2 011 +3 100 -0 101 -1 110 -2 111

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Op virgola mobile: Divisione

•  La divisione tra numeri in virgola mobile viene eseguita secondo i seguenti passi:§  Si sottraggono gli esponenti e si somma 127§  Si calcola il risultato della divisione delle mantisse §  Si determina il segno del risultato§  Si normalizza il risultato così ottenuto

•  Non sempre quest’ultima operazione è necessaria

•  La somma di 127 alla differenza degli esponenti è necessaria in quanto sono rappresentati in eccesso 127

Ea,127 = Ea + 127Eb,127 = Eb + 127Ea/b,127 = Ea/b + 127 = (Ea + 127) - (Eb + 127) + 127

44

Page 45: Numeri con segno ed in virgola - Intranet DEIBhome.deib.polimi.it/santambr/dida/ieim/2016/doc/lezioni/...• Con 3 bit avremo: 000 +0 001 +1 010 +2 011 +3 100 -0 101 -1 110 -2 111

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Op virgola mobile: Troncamento

•  Spesso accade di rappresentare i risultati intermedi di una operazione con una precisione maggiore di quella degli operandi e del risultato

•  Al termine dell’operazione è necessario effettuare una operazione di troncamento

•  Il troncamento serve a rimuovere un certo numero di bit per ottenere una rappresentazione approssimata del risultato

•  Si consideri il valore numerico rappresentato dal vettore:

B = 0.b-1 ... b-(k-1)b-kb-(k+1) ... b-n

•  Si voglia effettuare troncamento al bit k-esimo

45

Page 46: Numeri con segno ed in virgola - Intranet DEIBhome.deib.polimi.it/santambr/dida/ieim/2016/doc/lezioni/...• Con 3 bit avremo: 000 +0 001 +1 010 +2 011 +3 100 -0 101 -1 110 -2 111

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Op virgola mobile: troncamento

•  Chopping§  Consiste nell’ignorare i bit dal k-esimo all’n-esimo§  Questo metodo è polarizzato o biased §  L’errore è sempre positivo e varia nell’intervallo:

0 < ε < +(2-k+1 - 2-n)

•  Rounding§  Se il bit k-esimo vale 0, lasciare invariato il bit in posizione

(k-1) e ignorare i bit dal k-esimo all’n-esimo§  Se il bit k-esimo vale 1, sommare 1 in posizione (k-1) e

ignorare i bit dal k-esimo all’n-esimo§  Questo metodo è simmetrico o unbiased §  L’errore è centrato sullo zero e vale:

-(2-k+1 - 2-n) < ε < +(2-k+1 - 2-n)

46

Page 47: Numeri con segno ed in virgola - Intranet DEIBhome.deib.polimi.it/santambr/dida/ieim/2016/doc/lezioni/...• Con 3 bit avremo: 000 +0 001 +1 010 +2 011 +3 100 -0 101 -1 110 -2 111

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Virgola fissa vs. virgola mobile

Intervallo di variazione di un numero binario di 32 bit•  Codifica intera

0 ≤ |VI(B)| ≤ +231 ≈ 2.15 x 109

•  Codifica a virgola fissa+4.65 x 10-10 ≈ +2-31 ≤ |VVF(B)| ≤ +1

•  A pari numero di bit disponibili§  con la rappresentazione intera o in virgola fissa, i valori

rappresentati sono distribuiti uniformemente nel campo di rappresentabilità

§  con la rappresentazione in virgola mobile, i valori rappresentati sono distribuiti non uniformemente nel campo di rappresentabilità•  sono “più fitti” vicino allo 0 e “più radi” per valori assoluti grandi

•  Nella rappresentazione in virgola mobile (floating point) la posizione della virgola è mobile ed è indicata dal valore di un fattore moltiplicativo

47

Page 48: Numeri con segno ed in virgola - Intranet DEIBhome.deib.polimi.it/santambr/dida/ieim/2016/doc/lezioni/...• Con 3 bit avremo: 000 +0 001 +1 010 +2 011 +3 100 -0 101 -1 110 -2 111

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Errore di quantizzazione: virgola fissa vs. virgola mobile

Virgola fissa (con n bit per la parte frazionaria)

•  EAss = ValVero - ValRappr = costantecon (-1/2)2-n < EAss < (+1/2)2-n

•  ERel = EAss / ValVero (e cioè ERel ValVero= costante)

•  tanto più piccolo è il valore vero da rappresentare tanto maggiore è l’errore relativo che si commette nel rappresentarlo

•  tanto più grande è il valore vero da rappresentare tanto minore è l’errore relativo che si commette nel rappresentarlo

Virgola mobile

•  ERel = costante (= 2-#bit della M)

•  EAss = aumenta all’aumentare del valore valore vero da rappresentare

48

Page 49: Numeri con segno ed in virgola - Intranet DEIBhome.deib.polimi.it/santambr/dida/ieim/2016/doc/lezioni/...• Con 3 bit avremo: 000 +0 001 +1 010 +2 011 +3 100 -0 101 -1 110 -2 111

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Esempio

•  Numeri in virgola fissa§  Dato 0.001 ed il suo successivo 0.002

Errore percentuale:(0.002-0.001)/0.001*100 = 100%

§  Dato 100.001 ed il suo successivo 100.002Errore percentuale:(100.002-100.001)/100.001*100 = 0.001%

•  Numeri in virgola mobile§  Dato 0.128e-100 ed il suo successivo 0.129e-100

Errore percentuale: ((0.129e-100-0.128e-100)/0.128e-100)*100 = 0.78125 %

§  Dato 0.128e+100 ed il suo successivo 0.129e+100Errore percentuale:((0.129e+100-0.128e-+100)/0.128e+100)*100 = 0.78125 %

49

Page 50: Numeri con segno ed in virgola - Intranet DEIBhome.deib.polimi.it/santambr/dida/ieim/2016/doc/lezioni/...• Con 3 bit avremo: 000 +0 001 +1 010 +2 011 +3 100 -0 101 -1 110 -2 111

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Fine…

50