Sei sulla pagina 1di 15

Esercitazione n.

Rappresentazione
dei numeri

dott. Carlo Todeschini – tode@cremona.polimi.it – Politecnico di Milano – A.A. 2009/2010


Queste slide sono distribuite con licenza Creative Commons
Attribuzione-Non commerciale-Condividi allo stesso modo 2.5 Italia
Rappresentazione dei numeri /1

Rappresentazione di un numero reale in virgola fissa

+/- I-1 I-2 ... 0 -1 -2 ... -D

Segno Parte intera Parte frazionaria

N2 = s aI-1 aI-2 .... a0 b-1 b-2 ... b-D

N10 = (-1)s x ( a0 x 20 + a1 x 21 + ... + aI-1 x 2I-1 +


b-1 x 2-1 + b-2 x 2-2 + ... + b-D x 2-D )

Esercitazioni di Fondamenti di Informatica – Politecnico di Milano sede di Cremona – A.A. 2010/2011 – Carlo Todeschini – tode@cremona.polimi.it 2
Rappresentazione dei numeri /2

Conversione da un numero binario in virgola fissa a decimale:

10011.011

➢ Segno: 1 (1 = numero negativo; 0 = numero positivo)


➢ Parte intera: 1 x 20 + 1 x 21 + 0 x 22 + 0 x 23 = 1 + 2 = 3

Parte decimale: 0 x 2-1 + 1 x 2-2 + 1 x 2-3 = 0.25 + 0.125 = 0.375

Il numero ottenuto è: ­3.375

Esercitazioni di Fondamenti di Informatica – Politecnico di Milano sede di Cremona – A.A. 2010/2011 – Carlo Todeschini – tode@cremona.polimi.it 3
Rappresentazione dei numeri /3

Convertire i seguenti numeri binari in virgola fissa a decimale:

11101.101
010111010.1101011

Risultato:

11101.101 => -13.625


010111010.1101011 => 186.8359375

Esercitazioni di Fondamenti di Informatica – Politecnico di Milano sede di Cremona – A.A. 2010/2011 – Carlo Todeschini – tode@cremona.polimi.it 4
Rappresentazione dei numeri /4
Rappresentazione binaria di un numero frazionario

➢ si moltiplica per 2 e nel risultato si separa la parte intera (che è sempre


0 o 1);
➢ si ripete il procedimento fino a quando il risultato della moltiplicazione
è 1.000... oppure si raggiunge il numero di cifre binarie dedicate alla
codifica della parte frazionaria.

Rappresentare in binario il numero 0.453125:


0.453125 x 2 = 0.90625 => 0
0.90625 x 2 = 1.8125 => 1
0.8125 x 2 = 1.625 => 1
0.625 x 2 = 1.25 => 1
0.25 x 2 = 0.5 => 0
0.5 x 2 = 1.0 => 1

Il numero in binario è: 0.011101


Esercitazioni di Fondamenti di Informatica – Politecnico di Milano sede di Cremona – A.A. 2010/2011 – Carlo Todeschini – tode@cremona.polimi.it 5
Rappresentazione dei numeri /5

Convertire i seguenti numeri frazionari in binari:

0.15625
0.73543

Risultato:

0.15625 => 0.00101


0.73543 => 0.101111001...

Esercitazioni di Fondamenti di Informatica – Politecnico di Milano sede di Cremona – A.A. 2010/2011 – Carlo Todeschini – tode@cremona.polimi.it 6
Rappresentazione dei numeri /6

Rappresentazione di un numero reale in virgola mobile con lo


standard IEEE 754

1 bit 8 bit 23 bit

Segno [ s ] Esponente [ e ] Mantissa [ m ]

Nota: lo schema riportato è per codifica con 32 bit (float); in caso di codifica con 64 bit (double) si
usano 11 bit per l'esponente e 52 bit per la mantissa

N10 = (-1)s x 1.m x 2e - 127

dove 1.m denota il numero binario razionale composto da un 1, seguito dal punto
decimale, seguito dai bit presenti nella parte riservata alla mantissa ed e (da 1 a
254 compresi) la codifica decimale dell'esponente.
Nota: forma normalizzata
Esercitazioni di Fondamenti di Informatica – Politecnico di Milano sede di Cremona – A.A. 2010/2011 – Carlo Todeschini – tode@cremona.polimi.it 7
Rappresentazione dei numeri /7

Rappresentazione di un numero reale in virgola mobile con lo


standard IEEE 754: casi particolari

➢ Infinito, ∞, quando e=255 e m=0


➢ NaN (Not a Number, ossia valore indefinito) quando e=255 e m è
diverso da 0; usato in caso di operazioni con risultato indefinito come
0/0 o ∞/∞.
➢ Zero, quando e=0 e m=0.

Esercitazioni di Fondamenti di Informatica – Politecnico di Milano sede di Cremona – A.A. 2010/2011 – Carlo Todeschini – tode@cremona.polimi.it 8
Rappresentazione dei numeri /8

Conversione di un numero reale in binario con virgola mobile

1. porre a 0 il bit di segno se il numero è positivo altrimenti a 1 se è negativo


2. convertire in binario la parte intera del numero
3. convertire la parte frazionaria (ottenuta sottraendo al numero reale la parte intera)
4. normalizzare il numero binario ottenuto convertendo parte intera e parte frazionaria
(si sposta la virgola verso sinistra di p posizioni fino a ottenere il numero binario
espresso nella forma normalizzata, cioè 1.xxxxxx). Il numero binario ottenuto viene
moltiplicato per la potenza di 2 elevato a p. La mantissa m è la sequenza di bit dopo la
virgola
5. calcolare l'esponente e sommando a p il numero 127 e codificare in binario su 8 bit
l'esponente trovato.

Esercitazioni di Fondamenti di Informatica – Politecnico di Milano sede di Cremona – A.A. 2010/2011 – Carlo Todeschini – tode@cremona.polimi.it 9
Rappresentazione dei numeri /9

Conversione di un numero reale in binario con virgola mobile

Convertire il numero -612.1875 nella rappresentazione binaria IEEE 754


in virgola mobile float

1. porre a 0 il bit di segno se il numero è positivo altrimenti a 1 se è


negativo

s = 1

2. convertire in binario la parte intera del numero

612 => 29 + 26 + 25 + 22 = 1001100100

Esercitazioni di Fondamenti di Informatica – Politecnico di Milano sede di Cremona – A.A. 2010/2011 – Carlo Todeschini – tode@cremona.polimi.it 10
Rappresentazione dei numeri /10

Conversione di un numero reale in binario con virgola mobile

Convertire il numero -612.1875 nella rappresentazione binaria IEEE 754


in virgola mobile float

3. convertire la parte frazionaria (ottenuta sottraendo al numero reale la


parte intera)

0.187510 = 00112

4. normalizzare il numero binario ottenuto

1001100100.0011 => 1.0011001000011 x 29 => (p=9)

m = 0011001000011

Esercitazioni di Fondamenti di Informatica – Politecnico di Milano sede di Cremona – A.A. 2010/2011 – Carlo Todeschini – tode@cremona.polimi.it 11
Rappresentazione dei numeri /11

Conversione di un numero reale in binario con virgola mobile

Convertire il numero -612.1875 nella rappresentazione binaria IEEE 754


in virgola mobile float

5. calcolare l'esponente e sommando a p il numero 127 e codificare in


binario su 8 bit l'esponente trovato

e = p + 127 = 9 + 127 = 136 = 100010002

Il numero è:

s|e       |m
1 10001000 00110010000110000000000

Esercitazioni di Fondamenti di Informatica – Politecnico di Milano sede di Cremona – A.A. 2010/2011 – Carlo Todeschini – tode@cremona.polimi.it 12
Rappresentazione dei numeri /12

Conversione di un numero reale in binario con virgola mobile

Convertire i seguenti numeri nella rappresentazione binaria IEEE 754 in


virgola mobile float:

1574.873
­234987

Soluzione:

1574.873 => 01000100110001001101101111110000


-234987 => 11001000011001010111101011000000

Esercitazioni di Fondamenti di Informatica – Politecnico di Milano sede di Cremona – A.A. 2010/2011 – Carlo Todeschini – tode@cremona.polimi.it 13
Rappresentazione dei numeri /13

Conversione di un numero binario in reale con virgola mobile

1. individuare il segno s

2. individuare l'esponente e; k = e – 127

3. impostare j => 1.m (m sono i bit che compongono la mantissa)

4. spostare a destra di k posizioni il punto decimale di j

5. convertire in decimale la parte intera di j

6. convertire in decimale la parte frazionaria di j

Esercitazioni di Fondamenti di Informatica – Politecnico di Milano sede di Cremona – A.A. 2010/2011 – Carlo Todeschini – tode@cremona.polimi.it 14
Rappresentazione dei numeri /13

Conversione di un numero binario in reale con virgola mobile

Dato il seguente numero a 32 bit in rappresentazione binaria IEEE 754,


indicarne l'equivalente numero reale:

01000000010010010000111111011011

(è un numero “famoso”)

Esercitazioni di Fondamenti di Informatica – Politecnico di Milano sede di Cremona – A.A. 2010/2011 – Carlo Todeschini – tode@cremona.polimi.it 15

Potrebbero piacerti anche