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