Transcript null
INFORMATICA Novembre 2016
1ASA
Docente Salvatore Mosaico parte 2
Codifica dei numeri REALI (RAZIONALI E IRRAZIONALI) con segno in base 2: • Rappresentazione in virgola fissa (lezione precedente) • Rappresentazione in virgola mobile (Foating Point)
Rappresentazione
virgola mobile (Floating Point)
• La rappresentazione in virgola fissa non si presta a rappresentare numeri molto grandi (es. 567 000 000000) o molto piccoli (es. 0,0000000000000915) • Per ovviare a ciò si utilizza la rappresentazione in virgola mobile (
floatingpoint),
detta anche
a mantissa e caratteristica
. • Questo tipo di notazione si basa sulla rappresentazione esponenziale dei numeri, detta anche
notazione scientifica
. • Secondo tale notazione un numero reale N può essere espresso nella seguente forma:
N = (-1) Dove s * m * 2 esp s = segno 0 => + 1=> - m = mantissa esp = esponente o caratteristica
1
INFORMATICA Novembre 2016
1ASA
Docente Salvatore Mosaico parte 2
Formato floating point standard IEEE 754
lo standard internazionale più diffuso e quello stabilito dall'IEEE(Institute for Electrical and Electronics Engineering) identificato dalla sigla IEEE 754. Questo standard prevede
tre
formati principali di rappresentazione • l’esponente deve essere
polarizzato ossia
Al valore dell’esponente
originario occorre sommare un certo valore fisso detto
bias 2
n-1
-1
Formato N bit Segno Esponente Mantissa bias 23 127 Singola precisione
Doppia precisione
32 4 bytes 64 8 bytes 1 1 8 11
Quadrupla precisione
128 8 bytes 1 15 Facciamo esempio Singola precisione 52 112 1023 16383 • • • 1 bit per il segno 8 bit per l’esponente polarizzato
biased 127 (
si dice anche
eccesso 127)
23 bit per la mantissa normalizzata con la prima cifra significativa alla sinistra del punto con hidden bit ovvero nella forma 1.XXXXXXXXX
… X 1 prima della virgola viene omesso (
hidden bit
)
2
INFORMATICA Novembre 2016
1ASA
Docente Salvatore Mosaico parte 2
Esempio 1 Rappresentare in singola precisione (32 bit) il numero reale 43,6875 IL NUMERO È POSITIVO BIT 31 = 0 3 1 0 3 0 2 9 2 8 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 9 8 7 6 5 4 3 2 1 0 Convertiamo la parte intera DIVIDENDO 43 21 10 5 2 1 (43) 1o =(101011) 2 DIVISORE Convertiamo la parte frazionaria 2 2 2 2 2 2 (0,6875) 1o fattore1 0,6875 0,375 0,75 0,5 fattore2 2 2 2 2 (0,6875) 1o =(0,1011) 2 prodotto 1,375 0,75 1,5 1 3 QUOZIENTE 21 10 5 2 1 0 parte frazionaria 0,375 0,75 0,5 0 RESTO 1 1 0 1 0 1 (bit + significativo) parte intera 1 (bit + significativo) 0 1 1
INFORMATICA Novembre 2016
1ASA
Docente Salvatore Mosaico parte 2
Dunque (43,6875) 10 = ( 101011,1011) 2
Normalizziamo il numero binario ottenuto In modo che la forma sia 1.xxxxxx
( 101011.1011) 2 = 1,010111011*2 5 La parte intera non la considero (hidden bit o bit nascosto
, o
bit implicito )
MANTISSA vale pertanto
010111011
COMPLETO a 23 bit (aggiungo tanti 0 a destra )
01011101100000000000000 3 1 0 3 0 2 9 2 8 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 9 8 7 6 5 4 3 2 1 0 0 1 0 1 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Infine ESPONTENTE = 5 in binario Devo polarizzarlo aggiungendo bias 127 => 5 +127 = 132
(132)
10
= (10000100)
2 Risultato 3 1 3 0 2 9 2 8 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 9 8 7 6 5 4 3 2 1 0 0 1 0 0 0 0 1 0 0 0 1 0 1 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4
INFORMATICA Novembre 2016
1ASA
Docente Salvatore Mosaico parte 2
Esempio 2 Rappresentare in singola precisione (32 bit) il numero reale -0,75 IL NUMERO È NEGATIVO BIT 31 = 1 3 1 1 3 0 2 9 2 8 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 9 8 7 6 5 4 3 2 1 0 Covertiamo la parte intera (0) 1o =(0) 2 Covertiamo la parte frazionaria (0,75) 1o fattore1 0,75 0,5 fattore2 2 2 prodotto 1,5 1 parte frazionaria 0,5 0 parte intera 1 bit + significativo 1 (0,75) 1o =(0,11) 2 Dunque (-0,75) 10 = ( -0,11) 2
Normaliziamo il numero binario ottenuto In modo che la forma sia 1.xxxxxx
( -0,11) 2 = - 1, 1*2 -1 La parte intera non la considero (hidden bit o bit nascosto
, o
bit implicito ) 5
INFORMATICA Novembre 2016
1ASA
Docente Salvatore Mosaico parte 2 MANTISSA
1
COMPLETO a 23 bit (aggiungo tanti 0 a destra )
10000000000000000000000 3 1 0 3 0 2 9 2 8 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 9 8 7 6 5 4 3 2 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Infine ESPONENTE = -1 in binario Devo polarizzarlo aggiungendo bias 127 => -1 +127 = 126
(126)
10
= (1111110)
2 COMPLETO A 8 BIT (aggiungo 0 a sinistra) 3 1 3 0 2 9 2 8 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 9 8 7 6 5 4 3 2 1 0 0 0 1 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6
INFORMATICA Novembre 2016
1ASA
Docente Salvatore Mosaico parte 2
Rappresentazione casi particolari Lo zero
Valore
zero Infiniti Nan (not a number)
Segno 0 0/1
Zero
Esponente 0 255 255 Mantissa 0 0 Diverso da 0
3 1 3 0 2 9 2 8 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 9 8 7 6 5 4 3 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Infinito
segno 1 –infinito 0 + infinito
3 1 0 / 1 3 0 2 9 2 8 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 9 8 7 6 5 4 3 2 1 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
NaN
3 1 3 0 2 9 2 8 2 7 2 6 2 5 2 4 2 3 1 1 1 1 1 1 1 1 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 9 8 7 6 5 4 3 2 1 0 almeno un bit a 1 7