SlideShare a Scribd company logo
FONDAMENTI DI INFORMATICA



                        Errate corrige
                      Con esercizi svolti




            FONDAMENTI DI INFORMATICA


      ESERCITAZIONI ANNO ACCADEMICO 2012-2013


                DOTT. FABRIZIO SOLINAS
               Mail: fabrizio.solinas@unica.it
FONDAMENTI DI INFORMATICA

 Parte 2d


 •  Numeri frazionari in virgola fissa
     §  Da binario a decimale
     §  Da decimale a binario.


 •  Numeri in virgola mobile.
 •  Rappresentazione esponenziale
    normalizzata.
 •  Rappresentazione floating point.



UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA   2
FONDAMENTI DI INFORMATICA

 Parte 2d: virgola fissa
 CONVERSIONE DECIMALE-BINARIO.
 NUMERO FRAZIONARIO.
     LA FORMA POLINOMIALE PARTE FRAZIONARIA

     (.c−1 · · · c−m)b = c−1 × b−1 + · · · + c−m × b−m


 PROCEDIMENTO DI CONVERSIONE
     1.  SI MOLTIPLICA LA PARTE FRAZIONARIA DEL NUMERO DECIMALE PER 2
         §    LA PARTE INTERA DEL PRODOTTO OTTENUTO E’ UNA CIFRA BINARIA
         §    SE LA PARTE FRAZIONARIA RIMANENTE E’ NULLA, IL PROCEDIMENTO E’
               TERMINATO
         §    SE LA PARTE FRAZIONARIA NON E’ NULLA (O NON SI E’ RAGGIUNTO IL
               RISULTATO DESIDERATO) SI RIPETE IL PROCEDIMENTO




UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA                          3
FONDAMENTI DI INFORMATICA

 Parte 2d: virgola fissa
 SISTEMA DI NUMERAZIONE DECIMALE.


    NUMERI FRAZIONARI
     §  ESEMPIO: IL NUMERO 57427.356




UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA   4
FONDAMENTI DI INFORMATICA

 Parte 2d: virgola fissa


 CONVERSIONE DECIMALE-BINARIO.


     §  ESEMPIO:CONVERSIONE DI 0.5625 IN BINARIO.




UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA   5
FONDAMENTI DI INFORMATICA

 Parte 2d: virgola fissa
 CONVERTIRE IL NUMERO 17.55 IN BINARIO (PRECISIONE 8 CIFRE
 DECIMALI, ARROTONDAMENTO PER TRONCAMENTO).
 Parte intera: si usano i metodi già visti. 17 10 --> 100012
 Parte decimale: si usano le moltiplicazioni successive.
 •    0.55 * 2 = 1.10 (parte intera 1)si considera solo la parte decimale "0.10"
 •    0.10 * 2 = 0.20 (parte intera 0)
 •    0.20 * 2 = 0.40 (parte intera 0)
 •    0.40 * 2 = 0.80 (parte intera 0)
 •    0.80 * 2 = 1.60 (parte intera 1) si considera solo la parte decimale "0.60"
 •    0.60 * 2 = 1.20 (parte intera 1) si considera solo la parte decimale "0.20”
 •    0.20 * 2 = 0.40 (parte intera 0)
 •    0.40 * 2 = 0.80 (parte intera 0)

 Avendo ormai calcolate 8 cifre si tronca il risultato.
 Il risultato, a 8 cifre binarie frazionali, è quindi pari a :
 10001.100011002 .

UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA                              6
FONDAMENTI DI INFORMATICA

 Parte 2d: virgola fissa
 SISTEMA DI NUMERAZIONE BINARIO.


 CONVERSIONE DECIMALE-BINARIO.


     §  ESERCIZIO 1:CONVERSIONE DI 0.3562 IN BINARIO CON 5 BIT
         FRAZIONARI.




UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA            7
FONDAMENTI DI INFORMATICA

 Parte 2d: virgola fissa
 SISTEMA DI NUMERAZIONE BINARIO.


 CONVERSIONE DECIMALE-BINARIO.


     §  ESERCIZIO 1:CONVERSIONE DI 0.3562 IN BINARIO CON 5 BIT
         FRAZIONARI.




UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA            8
FONDAMENTI DI INFORMATICA

 Parte 2d: virgola fissa
 SISTEMA DI NUMERAZIONE BINARIO.


 CONVERSIONE DECIMALE-BINARIO.
     §  ESERCIZI:

         §  CONVERTIRE IN BINARIO I SEGUENTI NUMERI IN BINARIO CON MASSIMO 5
             CIFRE DECIMALI.
             §  23,466   [10111.0111]
             §  61,625   [111101.101]
             §  13,543   [1101.10001]
             §  55,110   [110111.00011]




UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA                          9
FONDAMENTI DI INFORMATICA

 Parte 2d: virgola fissa
 SISTEMA DI NUMERAZIONE BINARIO.


 CONVERSIONE BINARIO-DECIMALE.


     §  NUMERI FRAZIONARI.


        §  ESEMPIO: (0.101)2


        0·20 + 1·2-1 + 0·2-2 + 1·2-3 = 0 + 0.5 + 0 + 0.125 = 0.625




UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA               10
FONDAMENTI DI INFORMATICA

 Parte 2d: virgola fissa
 •  CONVERTIRE IL NUMERO BINARIO 1101.001011002 IN
    DECIMALE.
 Parteintera:1*20 +0*21 +1*22 +1*23 =1+0+4+8=1310


 Parte decimale: 0*2-1 + 0*2-2 + 1*2-3 + 0*2-4 + 1*2-5 + 1*2-6 +
 0*2-7 +
 0*2-8 = 0+0+0.125+0+0.03125+0.015625+0+0=0,17187510


 In definitiva: 1101.001011002 = 13.17187510




UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA         11
FONDAMENTI DI INFORMATICA

 Parte 2d: virgola fissa
 SISTEMA DI NUMERAZIONE BINARIO.


 CONVERSIONE BINARIO-DECIMALE.
     §  ESERCIZI:

         §  CONVERTIRE IN DECIMALE I SEGUENTI NUMERI BINARI UTILIZZANDO LA
             TECNICA DESCRITTA.


         §  111.101      [7.625]
         §  111.0101     [7.3125]
         §  10001.0001   [17.0625]
         §  11000.111    [24.875]




UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA                    12
FONDAMENTI DI INFORMATICA

 Parte 2d: virgola fissa
 SISTEMA DI NUMERAZIONE BINARIO.


 CONVERSIONE BINARIO-DECIMALE.
     §  ESERCIZI:

         §  CONVERTIRE IN DECIMALE I SEGUENTI NUMERI.
             §  11101.11010111    [29.83984375]
             §  10001.00001101    [17.05078125]
             §  00011.10011001    [3.59765625]
             §  11000.11111001    [24.97265625]




UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA   13
FONDAMENTI DI INFORMATICA

 Parte 2d: virgola mobile.
 •  REMAINDER: Un numero reale R può essere scritto in base B come
                             R= ± m * Be
 m = mantissa
 e = esponente
 B = base
 Esempi con B=10:
       R1 = 3.1569 * 103
       R2 = 2054.00035 * 10-6
       R3 = 0.0091 * 10-12
       R4 = 16.35 * 105

 Notazione Normalizzata: m = 0.d-1 .. d-k * Be




UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA               14
FONDAMENTI DI INFORMATICA

 Parte 2d: virgola mobile. Esercizi.
 •  Esempio:
     §  1010 = 10102 = 1010.02 * 20 = 0.101*24


     §  151.2510:
        –  151 = 128 + 16 + 4 + 2 + 1 = 100101112
        –  0.2510 x 2 = 0.5010 parte intera 0
        –  0.5010 x 2 = 110 parte intera 1
     §  Quindi = 151.2510 = 10010111.012 = 0.10010111012 * 28




UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA           15
FONDAMENTI DI INFORMATICA

 Parte 2d: virgola mobile.Esercizi.
 •  Convertire i seguenti numeri in virgola
    fissa e successivamente normalizzarli.
    (n=8,m=8)
     §  23.325   [00010111.01010011 - 0. 1011101010011 * 25]
     §  19.999   [00010011.11111111 - 0.1001111111111 * 25]
     §  22.001   [00010110.00000000 - 0.1011000000000 * 25]
     §  41.700   [00101001.10110011 - 0.10100110110011 * 26]




UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA          16
FONDAMENTI DI INFORMATICA

 Parte 2d Floating point.
 •  Remainder.
     §  Maggiore è il numero di bit per la mantissa e maggiore è
         l’accuratezza con cui si riescono a rappresentare i numero.
     §  Aumentando i bit per l'esponente si aumenta l’intervallo dei
         numeri rappresentabili.

 •  Overflow: si ha quando l’esponente positivo è troppo grande per poter
    essere rappresentato con il numero di bit assegnato all’esponente.

 •  Underflow: si ha quando l’esponente negativo è troppo grande (in
    valore assoluto) per poter essere rappresentato con il numero di bit
    assegnato all’esponente.




UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA                     17
FONDAMENTI DI INFORMATICA

 Parte 2d Floating point. Remainder. IEEE 754
 •  In riferimento a parole di 16/32/64/128




Dalla slide della prof.ssa Pes.

UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA   18
FONDAMENTI DI INFORMATICA

 Parte 2d Floating point. Esercizio di esempio 2/3.
 CONVERTIRE IN FLOATING-POINT IEEE-754 (VIRGOLA MOBILE)
 SU 32 BIT IL NUMERO -5.828125.
 Per convertire la parte intera da decimale a binario si procede
 dividendo il numero per 2:
     §  5 : 2 = 2 Resto 1
     §  2 : 2 = 1 Resto 0
     §  1 : 2 = 0 Resto 1
 •  Per convertire la parte frazionaria da decimale a binario si
    procede moltiplicando il numero per 2:
     §  0,828125       x 2 = 1,65625         Parte intera 1
     §  0,65625        x 2 = 1,3125          Parte intera 1
     §  0,3125         x 2 = 0,625           Parte intera 0
     §  0,625          x 2 = 1,25            Parte intera 1

UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA             19
FONDAMENTI DI INFORMATICA

 Parte 2d Floating point. Esercizio di esempio 3/3.
     §  0,25   x 2 = 0,5              Parte intera 0
     §  0,5    x2=1                   Parte intera 1
     §  0      x2=0                   Parte intera 0

 Per cui il numero binario è 101.110101 che si può
 anche scrivere come 1.01110101* 22
 Quindi :
 •  segno = 1, esponente(prendo gli 8 bit successivi al
    bit del segno)(2+127)=10000001 ,
 •  mantissa=01110101000000000000000
 •  Il numero -5.828125 in floating point è
    11000000101110101000000000000000


UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA    20
FONDAMENTI DI INFORMATICA

 Parte 2d Floating point. Esercizio di esempio 1/2.
 CONVERTIRE IN FLOATING-POINT IEEE-754 (VIRGOLA MOBILE) SU 32
 BIT IL NUMERO 3758.125
 Per convertire la parte intera da decimale a binario si procede dividendo il
 numero per 2:
     §  3758     : 2 = 1879 Resto 0
     §  1879     : 2 = 939       Resto 1
     §  939      : 2 = 469       Resto 1
     §  469      : 2 = 234       Resto 1
     §  234      : 2 = 117       Resto 0
     §  117      : 2 = 58        Resto 1
     §  58       : 2 = 29        Resto 0
     §  29       : 2 = 14        Resto 1
     §  14       :2= 7           Resto 0
     §  7        :2= 3           Resto 1
     §  3        :2= 1           Resto 1
     §  1        :2= 0           Resto 1




UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA                          21
FONDAMENTI DI INFORMATICA

 Parte 2d Floating point. Esercizio di esempio 2/2.
 Per convertire la parte frazionaria da decimale a binario si procede
 moltiplicando il numero per 2:
     §    0,125   x   2   =   0,25   Parte   intera   0
     §    0,25    x   2   =   0,5    Parte   intera   0
     §    0,5     x   2   =   1      Parte   intera   1
     §    0       x   2   =   0      Parte   intera   0
 Il numero in binario è 111010101110.0010 che si può scrivere
 come 1.110101011100010* 211
 Quindi :
 segno =0 ,
 esponente(prendo gli 8 bit successivi al bit del segno)
 (11+127)=(10+128)=10001010
 mantissa=11010101110001000000000

 Il numero 3758.125 in floating point è
 01000101011010101110001000000000


UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA                  22
FONDAMENTI DI INFORMATICA

 Parte 2d Floating point. Esercizio di esempio 1/3.
 CONVERTIRE IN FLOATING-POINT IEEE-754 (VIRGOLA MOBILE)
 SU 32 BIT IL NUMERO -23552.25
 Per convertire la parte intera da decimale a binario si procede
 dividendo il numero per 2:
     §  23552   : 2 = 11776 Resto 0
     §  11776   : 2 = 5888    Resto 0
     §  5888    : 2 = 2944    Resto 0
     §  2944    : 2 = 1472    Resto 0
     §  1472    : 2 = 736     Resto 0
     §  736     : 2 = 368     Resto 0
     §  368     : 2 = 184     Resto 0




UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA             23
FONDAMENTI DI INFORMATICA

 Parte 2d Floating point. Esercizio di esempio 2/3.
     §    184    :2    =   92       Resto     0
     §    92     :2    =   46       Resto     0
     §    46     :2    =   23       Resto     0
     §    23     :2    =   11       Resto     1
     §    11     :2    =   5        Resto     1
     §    5: 2 = 2         Resto    1
     §    2: 2 = 1         Resto    0
     §    1: 2 = 0         Resto    1

 Per convertire la parte frazionaria da decimale a binario si procede moltiplicando il
 numero per 2:
     §  0,25      x 2 = 0,5         Parte intera       0
     §  0,5       x2= 1             Parte intera       1
     §  0         x2= 0             Parte intera       0




UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA                                   24
FONDAMENTI DI INFORMATICA

 Parte 2d Floating point. Esercizio di esempio 3/3.
 Il numero in binario è 101110000000000.010 che si
 può scrivere come 1.01110000000000010* 214
 Quindi :
 segno =1,
 esponente(prendo gli 8 bit successivi al bit del segno)
 (14+127)=10001101
 mantissa=01110000000000010000000


 Il numero -23552.25 in floating point è
 11000110101110000000000010000000


UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA     25
FONDAMENTI DI INFORMATICA

 Parte 2d Floating point. Esercizi di esempio.
 CONVERTIRE IN DECIMALE I NUMERI ESPRESSI IN ESADECIMALE
 SECONDO LO STANDARD IEEE-754 SU 32 BIT.
 •  NUMERO 41340000H
     §  Numero in floating point =
         01000001001101000000000000000000
     §  segno=0        esponente(130-127)=310
     §  numero=1011,012=11,2510

 •  NUMERO C1140000H
     §  Numero in floating
         point=11000001000101000000000000000000
     §  segno=1        esponente(130-127)=310
     §  numero=-1001,012=-9,2510


UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA     26
FONDAMENTI DI INFORMATICA

 Parte 2d Floating point. Esercizio di esempio 1/2.
 •  Sia:
     §  s = 1
     §  e = 10000111
     §  m = 11011000000000000000000
 •  un numero in virgola mobile secondo lo standard IEEE 754 a 32 bit.
    Convertire in decimale.
 •  Soluzione:
     §  La formula generale è (-1)s *2(e-127) *1.m
 •  Abbiamo
     §  e = 100001112 = 13510




UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA                   27
FONDAMENTI DI INFORMATICA

 Parte 2d Floating point. Esercizio di esempio 2/2.
 •  Quindi:
     §  N      = (-1)s *2(e-127) *1.m
                = -1 *2(135-127) *1.11011
                = -1 *28 *1.11011
                = - 1110110002
                = -(28+27+26+24+23)10
                = -47210




UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA   28
FONDAMENTI DI INFORMATICA

 Parte 2d Floating point. Esercizi.
 •  CONVERTIRE IN BINARIO SEGUENTI NUMERI DECIMALI
    FRAZIONARI CON CODIFICA SU 32 BIT IEEE 754.
     A.  -12.72
     B.  +14.375
     C.  +7.99
     D.  -2.21
                      Nelle slide successive ciascun esercizio è svolto
                    interamente, passo dopo passo, in quanto i risultati
                  precedentemente forniti erano stati calcolati da software
                  che approssimavano il risultato. Quindi è per tale motivo
                 che i risultati calcolati a mano risultavano diversi da quelli
                                    ottenuti tramite software.




UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA                            29
FONDAMENTI DI INFORMATICA

 Parte 2d Floating point. Esercizio Riassuntivo A. 1/4.
 CONVERTIRE IN FLOATING-POINT IEEE-754 (VIRGOLA
 MOBILE) SU 32 BIT IL NUMERO -12.72
 Parte intera:


             1210 = 11002
 Parte frazionaria

 •    0.72       X   2   =   1.44   parte   intera   1
 •    0.44       X   2   =   0.88   parte   intera   0
 •    0.88       X   2   =   1.76   parte   intera   1
 •    0.76       X   2   =   1.52   parte   intera   1
 •    0.52       X   2   =   1.04   parte   intera   1
 •    0.04       X   2   =   0.08   parte   intera   0
 •    0.08       X   2   =   0.16   parte   intera   0

UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA    30
FONDAMENTI DI INFORMATICA

 Parte 2d Floating point. Esercizio Riassuntivo A. 2/4.
 •  0.16 X 2 = 0.32 parte intera 0
 •  0.32 X 2 = 0.64 parte intera 0
 •  0.64 X 2 = 1.28 parte intera 1
 •  0.28 X 2 = 0.56 parte intera 0
 •  0.56 X 2 = 1.12 parte intera 1
 •  0.12 X 2 = 0.24 parte intera 0
 •  0.24 X 2 = 0.48 parte intera 0
 •  0.48 X 2 = 0.96 parte intera 0
 •  0.96 X 2 = 1.92 parte intera 1
 •  0.92 X 2 = 1.84 parte intera 1
 •  0.84 X 2 = 1.68 parte intera 1



UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA    31
FONDAMENTI DI INFORMATICA

 Parte 2d Floating point. Esercizio Riassuntivo A. 3/4.
 •  0.68 X 2 = 1.36 parte intera 1
 •  0.36 X 2 = 0.72 parte intera 0
 •  0.72 X 2 = 1.44 parte intera 1
 •  0.44 X 2 = 0.88 parte intera 0
 •  0.88 X 2 = 1.76 parte intera 1




UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA    32
FONDAMENTI DI INFORMATICA

 Parte 2d Floating point. Esercizio Riassuntivo A. 4/4.
 Il numero in binario è
 1100.10111000010100011110101 che si può scrivere
 come 1.10010111000010100011110101 * 23
 Quindi :
 segno =1,
 esponente(prendo gli 8 bit successivi al bit del segno)
 (3+127)=10000010
 Mantissa=10010111000010100011110 (che viene
 troncata al 23esimo bit)
 Il numero -12.72 in floating point è
 1 10000010 10010111000010100011110


UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA     33
FONDAMENTI DI INFORMATICA

 Parte 2d Floating point. Esercizio Riassuntivo B. 1/2.
 CONVERTIRE IN FLOATING-POINT IEEE-754 (VIRGOLA
 MOBILE) SU 32 BIT IL NUMERO +14.375
 Parte intera:


             1410 = 11102
 Parte frazionaria

 •    0.375          X   2   =   0.75 parte intera 0
 •    0.75           X   2   =   1.5 parte intera 1
 •    0.5            X   2   =   1 parte intera 1
 •    0              X   2   =   0 parte intera 0




UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA    34
FONDAMENTI DI INFORMATICA

 Parte 2d Floating point. Esercizio Riassuntivo B. 2/2.
 Il numero in binario è 1110.0110 che si può scrivere
 come 1.1100110 * 23
 Quindi :
 segno =0,
 esponente(prendo gli 8 bit successivi al bit del segno)
 (3+127)=10000010
 Mantissa=11001100000000000000000
 Il numero +14.375 in floating point è
 0 10000010 11001100000000000000000




UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA     35
FONDAMENTI DI INFORMATICA

 Parte 2d Floating point. Esercizio Riassuntivo C. 1/4.
 CONVERTIRE IN FLOATING-POINT IEEE-754 (VIRGOLA
 MOBILE) SU 32 BIT IL NUMERO +7.99
 Parte intera:


             710 = 1112
 Parte frazionaria

 •    0.99       X   2   =   1.98   parte   intera   1
 •    0.98       X   2   =   1.96   parte   intera   1
 •    0.96       X   2   =   1.92   parte   intera   1
 •    0.92       X   2   =   1.84   parte   intera   1
 •    0.84       X   2   =   1.68   parte   intera   1
 •    0.68       X   2   =   1.36   parte   intera   1
 •    0.36       X   2   =   0.72   parte   intera   0

UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA    36
FONDAMENTI DI INFORMATICA

 Parte 2d Floating point. Esercizio Riassuntivo C. 2/4.
 •  0.72 X 2 = 1.44 parte intera 1
 •  0.44 X 2 = 0.88 parte intera 0
 •  0.88 X 2 = 1.76 parte intera 1
 •  0.76 X 2 = 1.52 parte intera 1
 •  0.52 X 2 = 1.04 parte intera 1
 •  0.04 X 2 = 0.08 parte intera 0
 •  0.08 X 2 = 0.16 parte intera 0
 •  0.16 X 2 = 0.32 parte intera 0
 •  0.32 X 2 = 0.64 parte intera 0
 •  0.64 X 2 = 1.28 parte intera 1
 •  0.28 X 2 = 0.56 parte intera 0



UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA    37
FONDAMENTI DI INFORMATICA

 Parte 2d Floating point. Esercizio Riassuntivo C. 3/4.
 •  0.56 X 2 = 1.12 parte intera 1
 •  0.12 X 2 = 0.24 parte intera 0
 •  0.24 X 2 = 0.48 parte intera 0
 •  0.48 X 2 = 0.96 parte intera 0
 •  0.96 X 2 = 1.92 parte intera 1




UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA    38
FONDAMENTI DI INFORMATICA

 Parte 2d Floating point. Esercizio Riassuntivo C. 4/4.
 Il numero in binario è 111.11111101011100001010001
 che si può scrivere come
 1.1111111101011100001010001 * 22
 Quindi :
 segno =0,
 esponente(prendo gli 8 bit successivi al bit del segno)
 (2+127)=10000001
 Mantissa=11111111010111000010100 (che viene
 troncata al 23esimo bit)
 Il numero +7.99 in floating point è
 0 10000001 11111111010111000010100

UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA     39
FONDAMENTI DI INFORMATICA

 Parte 2d Floating point. Esercizio Riassuntivo D. 1/4.
 CONVERTIRE IN FLOATING-POINT IEEE-754 (VIRGOLA
 MOBILE) SU 32 BIT IL NUMERO -2.21
 Parte intera:


             210 = 102
 Parte frazionaria

 •    0.21       X   2   =   0.42   parte   intera   0
 •    0.42       X   2   =   0.84   parte   intera   0
 •    0.84       X   2   =   1.68   parte   intera   1
 •    0.68       X   2   =   1.36   parte   intera   1
 •    0.36       X   2   =   0.72   parte   intera   0
 •    0.72       X   2   =   1.44   parte   intera   1
 •    0.44       X   2   =   0.88   parte   intera   0

UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA    40
FONDAMENTI DI INFORMATICA

 Parte 2d Floating point. Esercizio Riassuntivo D. 2/4.
 •  0.88 X 2 = 1.76 parte intera 1
 •  0.76 X 2 = 1.52 parte intera 1
 •  0.52 X 2 = 1.04 parte intera 1
 •  0.04 X 2 = 0.08 parte intera 0
 •  0.08 X 2 = 0.16 parte intera 0
 •  0.16 X 2 = 0.32 parte intera 0
 •  0.32 X 2 = 0.64 parte intera 0
 •  0.64 X 2 = 1.28 parte intera 1
 •  0.28 X 2 = 0.56 parte intera 0
 •  0.56 X 2 = 1.12 parte intera 1
 •  0.12 X 2 = 0.24 parte intera 0



UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA    41
FONDAMENTI DI INFORMATICA

 Parte 2d Floating point. Esercizio Riassuntivo D. 3/4.
 •  0.24 X 2 = 0.48 parte intera 0
 •  0.48 X 2 = 0.96 parte intera 0
 •  0.96 X 2 = 1.92 parte intera 1
 •  0.92 X 2 = 1.84 parte intera 1
 •  0.84 X 2 = 1.68 parte intera 1




UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA    42
FONDAMENTI DI INFORMATICA

 Parte 2d Floating point. Esercizio Riassuntivo D. 4/4.
 Il numero in binario è 10.00110101110000101000111
 che si può scrivere come
 1.000110101110000101000111 * 21
 Quindi :
 segno =1,
 esponente(prendo gli 8 bit successivi al bit del segno)
 (1+127)=10000000
 Mantissa=00011010111000010100011 (che viene
 troncata al 23esimo bit)
 Il numero -2.21 in floating point è
 1 10000000 00011010111000010100011

UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA     43
FONDAMENTI DI INFORMATICA

 Parte 2d Floating point. Esercizi.
 •  CONVERTIRE IN DECIMALE I SEGUENTI NUMERI BINARI
    FRAZIONARI CON CODIFICA SU 32 BIT IEEE 754.
 I.    0 01111011 00100000000000000000000                            [~0.07]
 II.  0 10000001 01100010100000000000000                             [~5.54]
 III.  1 10000010 10010001111000000000000 [~(-12.56)]

                    Nelle slide successive ciascun esercizio è svolto
                  interamente, passo dopo passo, in quanto i risultati
                precedentemente forniti erano stati calcolati da software
                che approssimavano il risultato. Quindi è per tale motivo
               che i risultati calcolati a mano risultavano diversi da quelli
                                  ottenuti tramite software.


         NB: (difficilmente sarà presente nel compito 2-6, 2-7 e
         cosi via.).

UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA                          44
FONDAMENTI DI INFORMATICA

 Parte 2d Floating point. Esercizio riassuntivo I.
 •  Quindi:
     §  N      = (-1)s *2(e-127) *1.m
                = (-1)0 *2(123-127) *1.001
                = 1 *2-4 *1.001
                = 0.00010012
                = (2-4+2-7)10
                = (0.0625+0.0078125)10
                = 0.0703125




UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA   45
FONDAMENTI DI INFORMATICA

 Parte 2d Floating point. Esercizio riassuntivo II.
 •  Quindi:
     §  N      = (-1)s *2(e-127) *1.m
                = (-1)0 *2(129-127) *1.011000101
                = 1 *22 *1.011000101
                = 101.10001012
                = (22+20+2-1+2-5+2-7)10
                = (4+1+0.5+0.03125+0.0078125)10
                = 5.5390625.




UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA   46
FONDAMENTI DI INFORMATICA

 Parte 2d Floating point. Esercizio riassuntivo III.
 •  Quindi:
     §  N      = (-1)s *2(e-127) *1.m
                = (-1)1 *2(130-127) *1.10010001111
                = -1 *23 *1.10010001111
                = -1100.100011112
                = -(23+22+2-1+2-5+2-6+2-7+2-8)10
     = -(8+4+0.5+0.03125+0.015625+0.0078125+0.00390625)10
                   	
 = -12.55859375.




UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA      47

More Related Content

Similar to Fondamenti esercitazioni parte2d_eserciziriassuntivisvolti

Fondamenti esercitazioni parte2a_2b
Fondamenti esercitazioni parte2a_2bFondamenti esercitazioni parte2a_2b
Fondamenti esercitazioni parte2a_2b
Fabrizio Solinas
 
Fondamenti esercitazioni parte2c
Fondamenti esercitazioni parte2cFondamenti esercitazioni parte2c
Fondamenti esercitazioni parte2c
Fabrizio Solinas
 
Operazioni con numeri binari - corso di recupero classe 1 ITIS Informatica - ...
Operazioni con numeri binari - corso di recupero classe 1 ITIS Informatica - ...Operazioni con numeri binari - corso di recupero classe 1 ITIS Informatica - ...
Operazioni con numeri binari - corso di recupero classe 1 ITIS Informatica - ...
Michele Maffucci
 
Lezione 22 (7 maggio 2012)
Lezione 22 (7 maggio 2012)Lezione 22 (7 maggio 2012)
Lezione 22 (7 maggio 2012)STELITANO
 
Progetto tmcl
Progetto tmclProgetto tmcl
Progetto tmcl
Andrea Malesani
 
Localizzazione delle colonnine per la ricarica dei veicoli elettrici a Roma
Localizzazione delle colonnine per la ricarica dei veicoli elettrici a RomaLocalizzazione delle colonnine per la ricarica dei veicoli elettrici a Roma
Localizzazione delle colonnine per la ricarica dei veicoli elettrici a Roma
Alessandro Sepiacci
 

Similar to Fondamenti esercitazioni parte2d_eserciziriassuntivisvolti (8)

Fondamenti esercitazioni parte2a_2b
Fondamenti esercitazioni parte2a_2bFondamenti esercitazioni parte2a_2b
Fondamenti esercitazioni parte2a_2b
 
Fondamenti esercitazioni parte2c
Fondamenti esercitazioni parte2cFondamenti esercitazioni parte2c
Fondamenti esercitazioni parte2c
 
Operazioni con numeri binari - corso di recupero classe 1 ITIS Informatica - ...
Operazioni con numeri binari - corso di recupero classe 1 ITIS Informatica - ...Operazioni con numeri binari - corso di recupero classe 1 ITIS Informatica - ...
Operazioni con numeri binari - corso di recupero classe 1 ITIS Informatica - ...
 
03 2 arit_bin
03 2 arit_bin03 2 arit_bin
03 2 arit_bin
 
Lezione 22 (7 maggio 2012)
Lezione 22 (7 maggio 2012)Lezione 22 (7 maggio 2012)
Lezione 22 (7 maggio 2012)
 
Progetto tmcl
Progetto tmclProgetto tmcl
Progetto tmcl
 
Codifica
CodificaCodifica
Codifica
 
Localizzazione delle colonnine per la ricarica dei veicoli elettrici a Roma
Localizzazione delle colonnine per la ricarica dei veicoli elettrici a RomaLocalizzazione delle colonnine per la ricarica dei veicoli elettrici a Roma
Localizzazione delle colonnine per la ricarica dei veicoli elettrici a Roma
 

Fondamenti esercitazioni parte2d_eserciziriassuntivisvolti

  • 1. FONDAMENTI DI INFORMATICA Errate corrige Con esercizi svolti FONDAMENTI DI INFORMATICA ESERCITAZIONI ANNO ACCADEMICO 2012-2013 DOTT. FABRIZIO SOLINAS Mail: fabrizio.solinas@unica.it
  • 2. FONDAMENTI DI INFORMATICA Parte 2d •  Numeri frazionari in virgola fissa §  Da binario a decimale §  Da decimale a binario. •  Numeri in virgola mobile. •  Rappresentazione esponenziale normalizzata. •  Rappresentazione floating point. UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA 2
  • 3. FONDAMENTI DI INFORMATICA Parte 2d: virgola fissa CONVERSIONE DECIMALE-BINARIO. NUMERO FRAZIONARIO. LA FORMA POLINOMIALE PARTE FRAZIONARIA (.c−1 · · · c−m)b = c−1 × b−1 + · · · + c−m × b−m PROCEDIMENTO DI CONVERSIONE 1.  SI MOLTIPLICA LA PARTE FRAZIONARIA DEL NUMERO DECIMALE PER 2 §  LA PARTE INTERA DEL PRODOTTO OTTENUTO E’ UNA CIFRA BINARIA §  SE LA PARTE FRAZIONARIA RIMANENTE E’ NULLA, IL PROCEDIMENTO E’ TERMINATO §  SE LA PARTE FRAZIONARIA NON E’ NULLA (O NON SI E’ RAGGIUNTO IL RISULTATO DESIDERATO) SI RIPETE IL PROCEDIMENTO UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA 3
  • 4. FONDAMENTI DI INFORMATICA Parte 2d: virgola fissa SISTEMA DI NUMERAZIONE DECIMALE. NUMERI FRAZIONARI §  ESEMPIO: IL NUMERO 57427.356 UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA 4
  • 5. FONDAMENTI DI INFORMATICA Parte 2d: virgola fissa CONVERSIONE DECIMALE-BINARIO. §  ESEMPIO:CONVERSIONE DI 0.5625 IN BINARIO. UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA 5
  • 6. FONDAMENTI DI INFORMATICA Parte 2d: virgola fissa CONVERTIRE IL NUMERO 17.55 IN BINARIO (PRECISIONE 8 CIFRE DECIMALI, ARROTONDAMENTO PER TRONCAMENTO). Parte intera: si usano i metodi già visti. 17 10 --> 100012 Parte decimale: si usano le moltiplicazioni successive. •  0.55 * 2 = 1.10 (parte intera 1)si considera solo la parte decimale "0.10" •  0.10 * 2 = 0.20 (parte intera 0) •  0.20 * 2 = 0.40 (parte intera 0) •  0.40 * 2 = 0.80 (parte intera 0) •  0.80 * 2 = 1.60 (parte intera 1) si considera solo la parte decimale "0.60" •  0.60 * 2 = 1.20 (parte intera 1) si considera solo la parte decimale "0.20” •  0.20 * 2 = 0.40 (parte intera 0) •  0.40 * 2 = 0.80 (parte intera 0) Avendo ormai calcolate 8 cifre si tronca il risultato. Il risultato, a 8 cifre binarie frazionali, è quindi pari a : 10001.100011002 . UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA 6
  • 7. FONDAMENTI DI INFORMATICA Parte 2d: virgola fissa SISTEMA DI NUMERAZIONE BINARIO. CONVERSIONE DECIMALE-BINARIO. §  ESERCIZIO 1:CONVERSIONE DI 0.3562 IN BINARIO CON 5 BIT FRAZIONARI. UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA 7
  • 8. FONDAMENTI DI INFORMATICA Parte 2d: virgola fissa SISTEMA DI NUMERAZIONE BINARIO. CONVERSIONE DECIMALE-BINARIO. §  ESERCIZIO 1:CONVERSIONE DI 0.3562 IN BINARIO CON 5 BIT FRAZIONARI. UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA 8
  • 9. FONDAMENTI DI INFORMATICA Parte 2d: virgola fissa SISTEMA DI NUMERAZIONE BINARIO. CONVERSIONE DECIMALE-BINARIO. §  ESERCIZI: §  CONVERTIRE IN BINARIO I SEGUENTI NUMERI IN BINARIO CON MASSIMO 5 CIFRE DECIMALI. §  23,466 [10111.0111] §  61,625 [111101.101] §  13,543 [1101.10001] §  55,110 [110111.00011] UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA 9
  • 10. FONDAMENTI DI INFORMATICA Parte 2d: virgola fissa SISTEMA DI NUMERAZIONE BINARIO. CONVERSIONE BINARIO-DECIMALE. §  NUMERI FRAZIONARI. §  ESEMPIO: (0.101)2 0·20 + 1·2-1 + 0·2-2 + 1·2-3 = 0 + 0.5 + 0 + 0.125 = 0.625 UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA 10
  • 11. FONDAMENTI DI INFORMATICA Parte 2d: virgola fissa •  CONVERTIRE IL NUMERO BINARIO 1101.001011002 IN DECIMALE. Parteintera:1*20 +0*21 +1*22 +1*23 =1+0+4+8=1310 Parte decimale: 0*2-1 + 0*2-2 + 1*2-3 + 0*2-4 + 1*2-5 + 1*2-6 + 0*2-7 + 0*2-8 = 0+0+0.125+0+0.03125+0.015625+0+0=0,17187510 In definitiva: 1101.001011002 = 13.17187510 UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA 11
  • 12. FONDAMENTI DI INFORMATICA Parte 2d: virgola fissa SISTEMA DI NUMERAZIONE BINARIO. CONVERSIONE BINARIO-DECIMALE. §  ESERCIZI: §  CONVERTIRE IN DECIMALE I SEGUENTI NUMERI BINARI UTILIZZANDO LA TECNICA DESCRITTA. §  111.101 [7.625] §  111.0101 [7.3125] §  10001.0001 [17.0625] §  11000.111 [24.875] UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA 12
  • 13. FONDAMENTI DI INFORMATICA Parte 2d: virgola fissa SISTEMA DI NUMERAZIONE BINARIO. CONVERSIONE BINARIO-DECIMALE. §  ESERCIZI: §  CONVERTIRE IN DECIMALE I SEGUENTI NUMERI. §  11101.11010111 [29.83984375] §  10001.00001101 [17.05078125] §  00011.10011001 [3.59765625] §  11000.11111001 [24.97265625] UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA 13
  • 14. FONDAMENTI DI INFORMATICA Parte 2d: virgola mobile. •  REMAINDER: Un numero reale R può essere scritto in base B come R= ± m * Be m = mantissa e = esponente B = base Esempi con B=10: R1 = 3.1569 * 103 R2 = 2054.00035 * 10-6 R3 = 0.0091 * 10-12 R4 = 16.35 * 105 Notazione Normalizzata: m = 0.d-1 .. d-k * Be UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA 14
  • 15. FONDAMENTI DI INFORMATICA Parte 2d: virgola mobile. Esercizi. •  Esempio: §  1010 = 10102 = 1010.02 * 20 = 0.101*24 §  151.2510: –  151 = 128 + 16 + 4 + 2 + 1 = 100101112 –  0.2510 x 2 = 0.5010 parte intera 0 –  0.5010 x 2 = 110 parte intera 1 §  Quindi = 151.2510 = 10010111.012 = 0.10010111012 * 28 UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA 15
  • 16. FONDAMENTI DI INFORMATICA Parte 2d: virgola mobile.Esercizi. •  Convertire i seguenti numeri in virgola fissa e successivamente normalizzarli. (n=8,m=8) §  23.325 [00010111.01010011 - 0. 1011101010011 * 25] §  19.999 [00010011.11111111 - 0.1001111111111 * 25] §  22.001 [00010110.00000000 - 0.1011000000000 * 25] §  41.700 [00101001.10110011 - 0.10100110110011 * 26] UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA 16
  • 17. FONDAMENTI DI INFORMATICA Parte 2d Floating point. •  Remainder. §  Maggiore è il numero di bit per la mantissa e maggiore è l’accuratezza con cui si riescono a rappresentare i numero. §  Aumentando i bit per l'esponente si aumenta l’intervallo dei numeri rappresentabili. •  Overflow: si ha quando l’esponente positivo è troppo grande per poter essere rappresentato con il numero di bit assegnato all’esponente. •  Underflow: si ha quando l’esponente negativo è troppo grande (in valore assoluto) per poter essere rappresentato con il numero di bit assegnato all’esponente. UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA 17
  • 18. FONDAMENTI DI INFORMATICA Parte 2d Floating point. Remainder. IEEE 754 •  In riferimento a parole di 16/32/64/128 Dalla slide della prof.ssa Pes. UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA 18
  • 19. FONDAMENTI DI INFORMATICA Parte 2d Floating point. Esercizio di esempio 2/3. CONVERTIRE IN FLOATING-POINT IEEE-754 (VIRGOLA MOBILE) SU 32 BIT IL NUMERO -5.828125. Per convertire la parte intera da decimale a binario si procede dividendo il numero per 2: §  5 : 2 = 2 Resto 1 §  2 : 2 = 1 Resto 0 §  1 : 2 = 0 Resto 1 •  Per convertire la parte frazionaria da decimale a binario si procede moltiplicando il numero per 2: §  0,828125 x 2 = 1,65625 Parte intera 1 §  0,65625 x 2 = 1,3125 Parte intera 1 §  0,3125 x 2 = 0,625 Parte intera 0 §  0,625 x 2 = 1,25 Parte intera 1 UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA 19
  • 20. FONDAMENTI DI INFORMATICA Parte 2d Floating point. Esercizio di esempio 3/3. §  0,25 x 2 = 0,5 Parte intera 0 §  0,5 x2=1 Parte intera 1 §  0 x2=0 Parte intera 0 Per cui il numero binario è 101.110101 che si può anche scrivere come 1.01110101* 22 Quindi : •  segno = 1, esponente(prendo gli 8 bit successivi al bit del segno)(2+127)=10000001 , •  mantissa=01110101000000000000000 •  Il numero -5.828125 in floating point è 11000000101110101000000000000000 UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA 20
  • 21. FONDAMENTI DI INFORMATICA Parte 2d Floating point. Esercizio di esempio 1/2. CONVERTIRE IN FLOATING-POINT IEEE-754 (VIRGOLA MOBILE) SU 32 BIT IL NUMERO 3758.125 Per convertire la parte intera da decimale a binario si procede dividendo il numero per 2: §  3758 : 2 = 1879 Resto 0 §  1879 : 2 = 939 Resto 1 §  939 : 2 = 469 Resto 1 §  469 : 2 = 234 Resto 1 §  234 : 2 = 117 Resto 0 §  117 : 2 = 58 Resto 1 §  58 : 2 = 29 Resto 0 §  29 : 2 = 14 Resto 1 §  14 :2= 7 Resto 0 §  7 :2= 3 Resto 1 §  3 :2= 1 Resto 1 §  1 :2= 0 Resto 1 UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA 21
  • 22. FONDAMENTI DI INFORMATICA Parte 2d Floating point. Esercizio di esempio 2/2. Per convertire la parte frazionaria da decimale a binario si procede moltiplicando il numero per 2: §  0,125 x 2 = 0,25 Parte intera 0 §  0,25 x 2 = 0,5 Parte intera 0 §  0,5 x 2 = 1 Parte intera 1 §  0 x 2 = 0 Parte intera 0 Il numero in binario è 111010101110.0010 che si può scrivere come 1.110101011100010* 211 Quindi : segno =0 , esponente(prendo gli 8 bit successivi al bit del segno) (11+127)=(10+128)=10001010 mantissa=11010101110001000000000 Il numero 3758.125 in floating point è 01000101011010101110001000000000 UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA 22
  • 23. FONDAMENTI DI INFORMATICA Parte 2d Floating point. Esercizio di esempio 1/3. CONVERTIRE IN FLOATING-POINT IEEE-754 (VIRGOLA MOBILE) SU 32 BIT IL NUMERO -23552.25 Per convertire la parte intera da decimale a binario si procede dividendo il numero per 2: §  23552 : 2 = 11776 Resto 0 §  11776 : 2 = 5888 Resto 0 §  5888 : 2 = 2944 Resto 0 §  2944 : 2 = 1472 Resto 0 §  1472 : 2 = 736 Resto 0 §  736 : 2 = 368 Resto 0 §  368 : 2 = 184 Resto 0 UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA 23
  • 24. FONDAMENTI DI INFORMATICA Parte 2d Floating point. Esercizio di esempio 2/3. §  184 :2 = 92 Resto 0 §  92 :2 = 46 Resto 0 §  46 :2 = 23 Resto 0 §  23 :2 = 11 Resto 1 §  11 :2 = 5 Resto 1 §  5: 2 = 2 Resto 1 §  2: 2 = 1 Resto 0 §  1: 2 = 0 Resto 1 Per convertire la parte frazionaria da decimale a binario si procede moltiplicando il numero per 2: §  0,25 x 2 = 0,5 Parte intera 0 §  0,5 x2= 1 Parte intera 1 §  0 x2= 0 Parte intera 0 UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA 24
  • 25. FONDAMENTI DI INFORMATICA Parte 2d Floating point. Esercizio di esempio 3/3. Il numero in binario è 101110000000000.010 che si può scrivere come 1.01110000000000010* 214 Quindi : segno =1, esponente(prendo gli 8 bit successivi al bit del segno) (14+127)=10001101 mantissa=01110000000000010000000 Il numero -23552.25 in floating point è 11000110101110000000000010000000 UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA 25
  • 26. FONDAMENTI DI INFORMATICA Parte 2d Floating point. Esercizi di esempio. CONVERTIRE IN DECIMALE I NUMERI ESPRESSI IN ESADECIMALE SECONDO LO STANDARD IEEE-754 SU 32 BIT. •  NUMERO 41340000H §  Numero in floating point = 01000001001101000000000000000000 §  segno=0 esponente(130-127)=310 §  numero=1011,012=11,2510 •  NUMERO C1140000H §  Numero in floating point=11000001000101000000000000000000 §  segno=1 esponente(130-127)=310 §  numero=-1001,012=-9,2510 UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA 26
  • 27. FONDAMENTI DI INFORMATICA Parte 2d Floating point. Esercizio di esempio 1/2. •  Sia: §  s = 1 §  e = 10000111 §  m = 11011000000000000000000 •  un numero in virgola mobile secondo lo standard IEEE 754 a 32 bit. Convertire in decimale. •  Soluzione: §  La formula generale è (-1)s *2(e-127) *1.m •  Abbiamo §  e = 100001112 = 13510 UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA 27
  • 28. FONDAMENTI DI INFORMATICA Parte 2d Floating point. Esercizio di esempio 2/2. •  Quindi: §  N = (-1)s *2(e-127) *1.m = -1 *2(135-127) *1.11011 = -1 *28 *1.11011 = - 1110110002 = -(28+27+26+24+23)10 = -47210 UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA 28
  • 29. FONDAMENTI DI INFORMATICA Parte 2d Floating point. Esercizi. •  CONVERTIRE IN BINARIO SEGUENTI NUMERI DECIMALI FRAZIONARI CON CODIFICA SU 32 BIT IEEE 754. A.  -12.72 B.  +14.375 C.  +7.99 D.  -2.21 Nelle slide successive ciascun esercizio è svolto interamente, passo dopo passo, in quanto i risultati precedentemente forniti erano stati calcolati da software che approssimavano il risultato. Quindi è per tale motivo che i risultati calcolati a mano risultavano diversi da quelli ottenuti tramite software. UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA 29
  • 30. FONDAMENTI DI INFORMATICA Parte 2d Floating point. Esercizio Riassuntivo A. 1/4. CONVERTIRE IN FLOATING-POINT IEEE-754 (VIRGOLA MOBILE) SU 32 BIT IL NUMERO -12.72 Parte intera: 1210 = 11002 Parte frazionaria •  0.72 X 2 = 1.44 parte intera 1 •  0.44 X 2 = 0.88 parte intera 0 •  0.88 X 2 = 1.76 parte intera 1 •  0.76 X 2 = 1.52 parte intera 1 •  0.52 X 2 = 1.04 parte intera 1 •  0.04 X 2 = 0.08 parte intera 0 •  0.08 X 2 = 0.16 parte intera 0 UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA 30
  • 31. FONDAMENTI DI INFORMATICA Parte 2d Floating point. Esercizio Riassuntivo A. 2/4. •  0.16 X 2 = 0.32 parte intera 0 •  0.32 X 2 = 0.64 parte intera 0 •  0.64 X 2 = 1.28 parte intera 1 •  0.28 X 2 = 0.56 parte intera 0 •  0.56 X 2 = 1.12 parte intera 1 •  0.12 X 2 = 0.24 parte intera 0 •  0.24 X 2 = 0.48 parte intera 0 •  0.48 X 2 = 0.96 parte intera 0 •  0.96 X 2 = 1.92 parte intera 1 •  0.92 X 2 = 1.84 parte intera 1 •  0.84 X 2 = 1.68 parte intera 1 UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA 31
  • 32. FONDAMENTI DI INFORMATICA Parte 2d Floating point. Esercizio Riassuntivo A. 3/4. •  0.68 X 2 = 1.36 parte intera 1 •  0.36 X 2 = 0.72 parte intera 0 •  0.72 X 2 = 1.44 parte intera 1 •  0.44 X 2 = 0.88 parte intera 0 •  0.88 X 2 = 1.76 parte intera 1 UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA 32
  • 33. FONDAMENTI DI INFORMATICA Parte 2d Floating point. Esercizio Riassuntivo A. 4/4. Il numero in binario è 1100.10111000010100011110101 che si può scrivere come 1.10010111000010100011110101 * 23 Quindi : segno =1, esponente(prendo gli 8 bit successivi al bit del segno) (3+127)=10000010 Mantissa=10010111000010100011110 (che viene troncata al 23esimo bit) Il numero -12.72 in floating point è 1 10000010 10010111000010100011110 UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA 33
  • 34. FONDAMENTI DI INFORMATICA Parte 2d Floating point. Esercizio Riassuntivo B. 1/2. CONVERTIRE IN FLOATING-POINT IEEE-754 (VIRGOLA MOBILE) SU 32 BIT IL NUMERO +14.375 Parte intera: 1410 = 11102 Parte frazionaria •  0.375 X 2 = 0.75 parte intera 0 •  0.75 X 2 = 1.5 parte intera 1 •  0.5 X 2 = 1 parte intera 1 •  0 X 2 = 0 parte intera 0 UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA 34
  • 35. FONDAMENTI DI INFORMATICA Parte 2d Floating point. Esercizio Riassuntivo B. 2/2. Il numero in binario è 1110.0110 che si può scrivere come 1.1100110 * 23 Quindi : segno =0, esponente(prendo gli 8 bit successivi al bit del segno) (3+127)=10000010 Mantissa=11001100000000000000000 Il numero +14.375 in floating point è 0 10000010 11001100000000000000000 UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA 35
  • 36. FONDAMENTI DI INFORMATICA Parte 2d Floating point. Esercizio Riassuntivo C. 1/4. CONVERTIRE IN FLOATING-POINT IEEE-754 (VIRGOLA MOBILE) SU 32 BIT IL NUMERO +7.99 Parte intera: 710 = 1112 Parte frazionaria •  0.99 X 2 = 1.98 parte intera 1 •  0.98 X 2 = 1.96 parte intera 1 •  0.96 X 2 = 1.92 parte intera 1 •  0.92 X 2 = 1.84 parte intera 1 •  0.84 X 2 = 1.68 parte intera 1 •  0.68 X 2 = 1.36 parte intera 1 •  0.36 X 2 = 0.72 parte intera 0 UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA 36
  • 37. FONDAMENTI DI INFORMATICA Parte 2d Floating point. Esercizio Riassuntivo C. 2/4. •  0.72 X 2 = 1.44 parte intera 1 •  0.44 X 2 = 0.88 parte intera 0 •  0.88 X 2 = 1.76 parte intera 1 •  0.76 X 2 = 1.52 parte intera 1 •  0.52 X 2 = 1.04 parte intera 1 •  0.04 X 2 = 0.08 parte intera 0 •  0.08 X 2 = 0.16 parte intera 0 •  0.16 X 2 = 0.32 parte intera 0 •  0.32 X 2 = 0.64 parte intera 0 •  0.64 X 2 = 1.28 parte intera 1 •  0.28 X 2 = 0.56 parte intera 0 UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA 37
  • 38. FONDAMENTI DI INFORMATICA Parte 2d Floating point. Esercizio Riassuntivo C. 3/4. •  0.56 X 2 = 1.12 parte intera 1 •  0.12 X 2 = 0.24 parte intera 0 •  0.24 X 2 = 0.48 parte intera 0 •  0.48 X 2 = 0.96 parte intera 0 •  0.96 X 2 = 1.92 parte intera 1 UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA 38
  • 39. FONDAMENTI DI INFORMATICA Parte 2d Floating point. Esercizio Riassuntivo C. 4/4. Il numero in binario è 111.11111101011100001010001 che si può scrivere come 1.1111111101011100001010001 * 22 Quindi : segno =0, esponente(prendo gli 8 bit successivi al bit del segno) (2+127)=10000001 Mantissa=11111111010111000010100 (che viene troncata al 23esimo bit) Il numero +7.99 in floating point è 0 10000001 11111111010111000010100 UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA 39
  • 40. FONDAMENTI DI INFORMATICA Parte 2d Floating point. Esercizio Riassuntivo D. 1/4. CONVERTIRE IN FLOATING-POINT IEEE-754 (VIRGOLA MOBILE) SU 32 BIT IL NUMERO -2.21 Parte intera: 210 = 102 Parte frazionaria •  0.21 X 2 = 0.42 parte intera 0 •  0.42 X 2 = 0.84 parte intera 0 •  0.84 X 2 = 1.68 parte intera 1 •  0.68 X 2 = 1.36 parte intera 1 •  0.36 X 2 = 0.72 parte intera 0 •  0.72 X 2 = 1.44 parte intera 1 •  0.44 X 2 = 0.88 parte intera 0 UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA 40
  • 41. FONDAMENTI DI INFORMATICA Parte 2d Floating point. Esercizio Riassuntivo D. 2/4. •  0.88 X 2 = 1.76 parte intera 1 •  0.76 X 2 = 1.52 parte intera 1 •  0.52 X 2 = 1.04 parte intera 1 •  0.04 X 2 = 0.08 parte intera 0 •  0.08 X 2 = 0.16 parte intera 0 •  0.16 X 2 = 0.32 parte intera 0 •  0.32 X 2 = 0.64 parte intera 0 •  0.64 X 2 = 1.28 parte intera 1 •  0.28 X 2 = 0.56 parte intera 0 •  0.56 X 2 = 1.12 parte intera 1 •  0.12 X 2 = 0.24 parte intera 0 UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA 41
  • 42. FONDAMENTI DI INFORMATICA Parte 2d Floating point. Esercizio Riassuntivo D. 3/4. •  0.24 X 2 = 0.48 parte intera 0 •  0.48 X 2 = 0.96 parte intera 0 •  0.96 X 2 = 1.92 parte intera 1 •  0.92 X 2 = 1.84 parte intera 1 •  0.84 X 2 = 1.68 parte intera 1 UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA 42
  • 43. FONDAMENTI DI INFORMATICA Parte 2d Floating point. Esercizio Riassuntivo D. 4/4. Il numero in binario è 10.00110101110000101000111 che si può scrivere come 1.000110101110000101000111 * 21 Quindi : segno =1, esponente(prendo gli 8 bit successivi al bit del segno) (1+127)=10000000 Mantissa=00011010111000010100011 (che viene troncata al 23esimo bit) Il numero -2.21 in floating point è 1 10000000 00011010111000010100011 UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA 43
  • 44. FONDAMENTI DI INFORMATICA Parte 2d Floating point. Esercizi. •  CONVERTIRE IN DECIMALE I SEGUENTI NUMERI BINARI FRAZIONARI CON CODIFICA SU 32 BIT IEEE 754. I.  0 01111011 00100000000000000000000 [~0.07] II.  0 10000001 01100010100000000000000 [~5.54] III.  1 10000010 10010001111000000000000 [~(-12.56)] Nelle slide successive ciascun esercizio è svolto interamente, passo dopo passo, in quanto i risultati precedentemente forniti erano stati calcolati da software che approssimavano il risultato. Quindi è per tale motivo che i risultati calcolati a mano risultavano diversi da quelli ottenuti tramite software. NB: (difficilmente sarà presente nel compito 2-6, 2-7 e cosi via.). UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA 44
  • 45. FONDAMENTI DI INFORMATICA Parte 2d Floating point. Esercizio riassuntivo I. •  Quindi: §  N = (-1)s *2(e-127) *1.m = (-1)0 *2(123-127) *1.001 = 1 *2-4 *1.001 = 0.00010012 = (2-4+2-7)10 = (0.0625+0.0078125)10 = 0.0703125 UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA 45
  • 46. FONDAMENTI DI INFORMATICA Parte 2d Floating point. Esercizio riassuntivo II. •  Quindi: §  N = (-1)s *2(e-127) *1.m = (-1)0 *2(129-127) *1.011000101 = 1 *22 *1.011000101 = 101.10001012 = (22+20+2-1+2-5+2-7)10 = (4+1+0.5+0.03125+0.0078125)10 = 5.5390625. UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA 46
  • 47. FONDAMENTI DI INFORMATICA Parte 2d Floating point. Esercizio riassuntivo III. •  Quindi: §  N = (-1)s *2(e-127) *1.m = (-1)1 *2(130-127) *1.10010001111 = -1 *23 *1.10010001111 = -1100.100011112 = -(23+22+2-1+2-5+2-6+2-7+2-8)10 = -(8+4+0.5+0.03125+0.015625+0.0078125+0.00390625)10 = -12.55859375. UNIVERSITA' DI CAGLIARI-CORSO DI LAUREA IN INFORMATICA 47