La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Numeri con segno ed in virgola Marco D. Santambrogio – Ver. aggiornata al 20 Marzo.

Presentazioni simili


Presentazione sul tema: "DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Numeri con segno ed in virgola Marco D. Santambrogio – Ver. aggiornata al 20 Marzo."— Transcript della presentazione:

1 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Numeri con segno ed in virgola Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 20 Marzo 2016

2 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONEObiettivi Complemento a due Numeri in virgola 2

3 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

4 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

5 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Stampa caratteri 5

6 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Stampa caratteri: int8_t 6

7 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 -20 1234567 [-2 2 +1, 2 2 -1] [0, 2 3 -1] 7

8 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Numeri negativi - problemi Con 3 bit avremo: 000+0 001+1 010+2 011+3 100-0 101 110-2 111-3 Problemi: Il numero 0 ha due rappresentazioni 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

9 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Stampa caratteri: unsigned 9

10 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Stampa caratteri: unsigned 10

11 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Il fattoriale… 11

12 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Il fattoriale: codice 12

13 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Proviamo ad eseguirlo… 13 int sono interi con segno

14 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Il fattoriale: unsigned int 14

15 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Proviamo ad eseguirlo… 15 Ora solo overflow

16 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

17 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

18 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

19 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

20 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 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

21 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE E ora.. Quanto fa 0,4 * 20? 21

22 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE E ora.. Quanto fa 0,4 * 20? 22

23 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE E ora.. Quanto fa 0,4 * 20? 23 WATWAT

24 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE E ora.. Quanto fa 0,4 * 20? 24

25 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

26 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 = b k-1... b 0,b -1... B -n Il suo valore è dato da V(B) = b k-1 x2 k-1 +... + b 0 x2 0 + b -1 x2 -1 +... + b -n x2 -n Il fattore di scala che consente di passare dalla rappresentazione intera a quella a virgola fissa è pari a S n = 2 -n = 1 / 2 n Detti V I il valore intero e V VF il valore in virgola fissa di B: V VF (B) = V I (B) x S n = V I (B) x 2 -n parte frazionaria 26

27 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONEEsempio Si consideri il vettore binario: B = 010.10110 Il suo valore in virgola fissa è: V VF (B)= 2 1 + 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 è: S 5 = 2 -5 = 1 / 32 = 0.03125 Il valore di B, considerandolo intero è: V I (B) = 2 6 + 2 4 + 2 2 + 2 1 = 64 + 16 + 4 + 2 = 86 Da cui, moltiplicando per il fattore di scala, si ha: V VF (B) = V I (B) x S 5 = 86 x 0.03125 = 2.6875 27

28 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 SegnoMantissaEsponente 28

29 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 = 0Rappresenta infinito (pos/neg)  E = 255 e M !=0NotANumber  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 10 38 La precisione consentita è di circa 7 cifre decimali SEM 1 bit Segno 8 bit Esponente 23 bit Mantissa 29

30 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 != 0 Interpretata 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

31 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Come passo da DEC a BIN? Come rappresentiamo il numero 3,375 10 in binario? 1 bit di segno 8 bit di esponente 23 bit di mantissa 31

32 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 3,375 10 in binario: segno La ricerca del segno è semplice  0 per indicare un segno +  1 per indicare un segno - 32

33 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 3,375 10 in binario: mantissa 3,375 10 è 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,375 10 è 11.01100… 33

34 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 3,375 10 in binario: mantissa E quindi 3,375 10 è 11.01100… Ricordiamo  La prima cifra della mantissa è sempre 1 Quindi devo normalizzare!  E come si normalizza? 34

35 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

36 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 3,375 10 in binario: mantissa normalizzata E quindi 3,375 10 è 11.011  11.011 -> 1.1011 x 2 1 Mantissa = 10110000000000000000000 36

37 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 3,375 10 in binario: esponente Esponente (eccesso 127) = 127 + 1  L’uno deriva dalla normalizzazione delle mantissa: 11.011 -> 1.1011 x 2 1 37

38 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 3,375 10 in binario Come rappresentiamo il numero 3,375 10 in binario? 1 bit di segno: 0 8 bit di esponente: 10000000 (128) 23 bit di mantissa: 10110000000000000000000 Mettiamo tutti insieme:  3,375 10 = 0 10000000 10110000000000000000000 38

39 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

40 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

41 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Userete ad esercitazione… 41

42 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

43 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 E a,127 = E a + 127 E b,127 = E b + 127 E axb,127 = E axb + 127 = (E a + 127) + (E b + 127) - 127 43

44 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 E a,127 = E a + 127 E b,127 = E b + 127 E a/b,127 = E a/b + 127 = (E a + 127) - (E b + 127) + 127 44

45 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 -k b -(k+1)... b -n Si voglia effettuare troncamento al bit k-esimo 45

46 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

47 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Virgola fissa vs. virgola mobile Intervallo di variazione di un numero binario di 32 bit Codifica intera 0  |V I (B)|  +2 31  2.15 x 10 9 Codifica a virgola fissa +4.65 x 10 -10  +2 -31  |V VF (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

48 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Errore di quantizzazione: virgola fissa vs. virgola mobile Virgola fissa (con n bit per la parte frazionaria) E Ass = Val Vero - Val Rappr = costante con (-1/2)2 -n < E Ass < (+1/2)2 -n E Rel = E Ass / Val Vero (e cioè E Rel Val Vero = 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 E Rel = costante (= 2 -#bit della M ) E Ass = aumenta all’aumentare del valore valore vero da rappresentare 48

49 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONEEsempio 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.002 Errore 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+100 Errore percentuale: ((0.129e+100-0.128e-+100)/0.128e+100)*100 = 0.78125 % 49

50 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONEFine… 50


Scaricare ppt "DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Numeri con segno ed in virgola Marco D. Santambrogio – Ver. aggiornata al 20 Marzo."

Presentazioni simili


Annunci Google