Numeri a virgola fissa

annuncio pubblicitario
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 .x1 x2 x b  xN 1 xN 2 x2 x1 x0
a 1
x b
x1 x2
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 n0
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  21  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  28  211  213  214  215  216  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=83U(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
n0


○ 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 

 dp1   p1  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, NanNan!
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
Scarica