Elaborazione Digitale dei Segnali Lezione 2: Numeri… digitali! A.A. 2016/17 (EDS1617) Giuseppe Baruffa Ingegneria elettronica per l’Internet-of-Things Numeri a virgola fissa ○ Vogliono rappresentare un qualsiasi numero razionale x nella forma x xNUM / xDEN | xNUM , xDEN , xDEN 2i , i ○ Vincoli aggiuntivi: – Stesso numero totale di bit per rappresentare tutti i numeri di un sotto-insieme finito • N bit totali 2N numeri differenti – Prefissato numero di bit per rappresentare parte intera e parte frazionaria dei numeri dell’insieme • La posizione della virgola è fissa (“fixed-point”) EDS1617 Lez02 - Numeri digitali Ing. elettronica per l’Internet-of-Things G. Baruffa Numeri razionali senza segno in virgola fissa ○ Numeri non-negativi ad N bit nel sottoinsieme X X x p / 2b | 0 p 2N 1, p ○ U(a,b), con a=N-b bit interi e b bit frazionari xBIN xa 1 xa 2 x1 x0 .x1 x2 x b xN 1 xN 2 x2 x1 x0 a 1 x b x1 x2 i a 1 x xi 2 xa 1 2 x0 2 b 2 2 2 i b 1 N 1 n xN 1 2N 1 xN 2 2N 2 x2 22 x1 2 x0 b xn 2 2 n0 2b ○ L’intervallo di rappresentazione è tale che 0 x 2N 1 2b 2a 2 b ○ U(N,0) rappresenta un generico intero senza segno x EDS1617 Lez02 - Numeri digitali Ing. elettronica per l’Internet-of-Things G. Baruffa Numeri razionali senza segno in virgola fissa ○ U(6,2) ha 8 bit e varia tra 0 e 26-2-2=64-1/4=63.75 xBIN 0x8A 100010.10 x 25 21 21 32 2 0.5 34.5 ○ U(-2,18) ha 16 bit e varia tra 0 e 2-2-2-18=0.2499961853027 xBIN 0x04BC .0000010010111100 x 28 211 213 214 215 216 0.004623413085938 ○ U(16,0) ha 16 bit e varia tra 0 e 216-20=65535 xBIN 0x04BC 0000010010111100 x 210 27 25 24 23 22 1212 EDS1617 Lez02 - Numeri digitali Ing. elettronica per l’Internet-of-Things G. Baruffa Complementi ○ Complemento a uno (C1) – Inverte ogni bit del valore x. Per U(N,0) è x 2N 1 x ○ Complemento a due (C2) – Complemento a uno più uno. Per U(N,0) è xˆ x 1 2N x ○ x=83U(8,0) – Complemento a uno: x 256 1 83 172 – Complemento a due: xˆ 256 83 173 EDS1617 Lez02 - Numeri digitali Ing. elettronica per l’Internet-of-Things G. Baruffa Numeri razionali con segno in virgola fissa C2 ○ Numeri ad N bit nel sottoinsieme X X x p / 2b | 2N 1 p 2N 1 1, p ○ A(a,b), con 1 bit di segno, a=N-b-1 bit interi e b bit frazionari xBIN xN 1 xN 2 N 2 1 N 1 n x2 x1 x0 x b xN 1 2 xn 2 2 segno n0 ○ L’intervallo di rappresentazione è tale che 2a x 2a 1 / 2b ○ A(N-1,0) rappresenta un generico intero con segno x ○ A(13,2) ha 16 bit e varia tra -213=-8192 e 213-1/22=8191.75 xBIN 0x84BC 1000010010111100 x 215 210 27 25 24 23 22 / 22 -31556/4=-7889 EDS1617 Lez02 - Numeri digitali Ing. elettronica per l’Internet-of-Things G. Baruffa Numeri a virgola mobile ○ E’ una rappresentazione log-lineare di un numero reale con p bit di precisione nella forma x d0 d1 1 d2 2 dp1 p1 e , d 0,1 ○ Il numero β rappresenta la base (sempre pari) ○ Il numero binario d si chiama mantissa o, più correttamente, “significando” ○ Il numero e rappresenta l’esponente, intero positivo variabile tra emax ed emin ○ Un numero a virgola mobile (“floating-point”) può essere codificato con N bit N log2 emax emin 1 log2 p 1 esponente EDS1617 Lez02 - Numeri digitali segno significando Ing. elettronica per l’Internet-of-Things G. Baruffa Numeri a virgola mobile - limitazioni ○ Non tutti i numeri reali possono essere rappresentati – Precisione • β=10, p=3 0.1 = 1.00×10-1 • β=2, p=24 0.1 ≈ 1.10011001100110011001101×2-4 – Limiti • Valore superiore a β ·β-emax o inferiore a 1.0 ·β-emin ○ Non unica – 1.00×10-1 e 0.01×101 rappresentano lo stesso numero • Se la prima cifra non è zero, si dicono normalizzati ○ β=2, p=3, emin=-1, emax=2 – 16 numeri normalizzati ○ Impossibile rappresentare lo zero con numeri normalizzati – Usando k bit per l’esponente, si può riservare una combinazione a indicare lo zero e tutte le altre 2k-1 possono essere utilizzate per un vero esponente EDS1617 Lez02 - Numeri digitali Ing. elettronica per l’Internet-of-Things G. Baruffa Standard IEEE 754/854 floating-point ○ Creato dalla IEEE nel 1985, ultimo aggiornamento 2008 ○ Usa base 2 o 10 (normalmente 2) ○ Originariamente esistevano 4 formati diversi di precisione – Singola, singola estesa, doppia, doppia estesa – Singola corrisponde al tipo float, doppia al tipo double ○ Il numero è rappresentato da s x 1 d e EDS1617 Lez02 - Numeri digitali Ing. elettronica per l’Internet-of-Things G. Baruffa Virgola mobile precisione singola ○ Il tipo float è codificato con 32 bit – 1 bit per il segno s – 8 bit per l’esponente e • Polarizzazione: l’esponente vero è il valore binario convertito in decimale meno 127 e=eBIN-127 – 23 bit per il significando d • Dato che è normalizzato, usa in realtà 24 bit, solo che il primo è nascosto (vale sempre 1) ○ Il numero 0 è rappresentato da un esponente -127 (0 in binario) e da un significando 0 in binario ○ Massimo e minimo numero positivo rappresentabile – (2−2−23)×2127 ≈ 3.402823×1038 – 1×2-126 ≈ 1.17549×10-38 EDS1617 Lez02 - Numeri digitali Ing. elettronica per l’Internet-of-Things G. Baruffa Quantità speciali in virgola mobile ○ Zeri – Rappresentati dall’ esponente più piccolo (bit tutti a zero) e significando a zero – Possono essere positivi o negativi • +3x0=+0, -3x0=-0, +5/-=-0 ○ Infiniti – Rappresentati dall’esponente più grande (bit tutti a uno) e significando nullo – Possono essere positivi o negativi – +5/0=+, -5/0=- ○ Denormalizzati (o subnormali) – Permettono di estendere l’intervallo di rappresentazione in certi casi particolari ○ NaN (Not-a-Number) – Risultanti da operazioni non definite – 0/0=NaN, sqrt(-1)=NaN, +-=NaN, /=NaN, NanNan! EDS1617 Lez02 - Numeri digitali Ing. elettronica per l’Internet-of-Things G. Baruffa Bibliografia ○ Sarà EDS1617 Lez02 - Numeri digitali Ing. elettronica per l’Internet-of-Things G. Baruffa