Rappresentazione dei dati. Rappresentazione digitale dei dati Memoria del calcolatore è finita...

Post on 01-May-2015

214 views 0 download

Transcript of Rappresentazione dei dati. Rappresentazione digitale dei dati Memoria del calcolatore è finita...

Rappresentazione dei dati

Rappresentazione digitale dei dati

Memoria del calcolatore è finita

L’insieme dei numeri (interi e

reali) e dei caratteri rappresentabili è

finito

Numeri interi (C++: int)Numeri reali (C++ float e double)Caratteri (C++ char)

Gli interi nel computer

e i negativi ?

Con 32 bit rappresento 232 numeri distinti.Con n bit bn-1…b1 b0:

1

0

00

11

11 2222

n

i

ii

nn bbbbx

b0 b1 b2 bn-3 bn-2 bn-1

20 21 22 2n-3 2n-12n-2

Riserviamo il primo bit per il segno:0 = positivo 1 = negativo.

I numeri positivi rappresentabili sono quelli compresi tra 0 e 2n-1-1

Gli interi nel computer

s b0 b1 bn-3 bn-2 bn-1

+/- 20 21 2n-3 2n-12n-2

Complemento a uno

Si complementa a 2n-1 il valore assoluto del numero.

1 1 1

0 0 02 2 (1 )2

n n ni i ii ii i i

x b b

63- 0=--- 63

111111- 000000=------- 111111

in binario

Con n = 6 si rappresentano i numeri:

0 1 ... 31 32 ... 63

0 1 ... 31 -31 ... -0 positivi negativi

Rappr.

Numero

Rappresentazione dello 0

EsempioEsempio con n = 6 bit: la rappresentazione di –10 è:

63- 10=--- 53

111111- 001010=------- 110101

in binario

Complemento a due

Si complementa il valore assoluto del numero a 2n invece che a 2n-1.

Esempio con n = 6 bit: la rappresentazione di –10 è:

64- 10=--- 54

1000000- 001010=-------0110110

in binario

Complementando 0 si ottiene ancora 0

64- 0=--- 64 ha gli ultimi 6 bit uguali a 0

in binario 1000000- 000000=-------1000000

Rappresentazione dello 0

Esempio

Complementando 54 (che rappresenta –10) si ottiene

64- 54=--- 10 ha il bit 6 uguale a 0(positivo)

in binario 1000000- 110110=-------0001010

Esempio

Complementando 32 (che rappresenta –32) si ottiene

64- 32=--- 32 ha il bit 6 uguale a 1(negativo)

in binario 1000000- 100000=-------0100000

Con n = 6 si rappresentano i numeri:

0 1 ... 31 32 ... 63

0 1 ... 31 -32 ... -1 positivi negativi

Rappr.

Numero

Interi in complemento a due

In generale: con n bits

positivi 0 .... 2n-1-1

negativi -2n-1 .... -1

Somma

10+ 12=--- 22

Somma di numeri positivi: 10+12

binario

001010+ 001100=-------0010110

001000riporto

decimale

Somma di numeri negativi: (-10)+(-12)

-10 64-10 = 54 -12 64-12 = 52

54+ 52=---106

binario

110110+ 110100=-------1101010

Somma di numeri negativi

decimale

106-64=42

bit di overflow complemento

64-42 = 22

verifica

-22 64-22= 42

Somma di numeri negativi

1101010

0*25+1*24+0*23+1*22+0*20

- 22

54+ 12=--- 66

Somma con un numero negativo (-10)+12

-10 64-10 = 54

110110+ 001100=-------1000010

Somma

binariodecimale

27+ 12=--- 39

64-39 = 25 -25 64-25= 39

011011+ 001100=-------0100111

Overflow

Risultato: 27+12 = -25

37+ 52=--- 89

89-64 = 25

Overflow

Risultato: -27-12 = 25

-27 64-27= 37 -12 64-12= 52

100101+ 110100=-------1011001

Rappresentazione decimale e binaria dei razionali

5 : 4 = 1,25 10 20 0

54

1,2510

in binario

101100

101 : 100 = 1,01 100 0

1,012

parte interabinaria

parte frazionaria binaria

parte interadecimale

parte frazionaria decimale

7 : 3 = 2,33.. 10 10 1

73

in binario

11111

111 : 11 = 10,01001001.. 0100 100 100

2,333..10 =

2,310

10,0100100..2

= 10,0102

Esempio 1

7 : 5 = 1,4 20 0

75

in binario

111101

111 : 101 = 1,0110001000.. 1000 110 1000 110 1000

1,410

1,0110001000..2

= 1,0110002

Esempio 2

3,141592....10

in binario

?

Irrazionali

0,1101001

2-1+ 2-2 + 2-4 + 2-7

Parte frazionaria

0,1101001

moltiplicare per 2 significa spostare la virgola di un posto a destra

1,101001

2-1 2-2...

20 2-1.......

Trucco

allora 2 0,99 = 1,98 = b1,b2b3...bk

quindi b1 è 1

e 0,98 è rappresentato da 0,b2b3...bk

Esempio 1

0,99 (decimale) = 0,b1b2b3...bk (binario)

0,592= 1,180,182= 0,360,362= 0,72

0,722= 1,440,442= 0,880,882= 1,76

0,100101...

rappresentazione binaria di 0,59

Esempio 2

1 8 23

s e+127 m

Rappresenta:

x = s 2e · 1,m

implicito

Rappresentazione dei reali

Estensione dei numeri invirgola mobile

0 e 255 sono esponenti riservati:

1 e+127 254 quindi

-126 e 127

12,65 1100, ???

0,652 = 1.30 0,302 = 0.60 0,602 = 1.20 0,202 = 0.40 0,402 = 0.80 0,802 = 1.60 …..

101001...

Esempio

1100,101001... = 23 1,100101001...

mantissa = 1,100101001...

esponente 3 e quindi 3+127 = 130

esponente = 10000010

segno = 0

0 10000010 100101001...

Esempio cont.

Rappresentazione dei Reali “piccoli”

1 8 23

s 0 m

Rappresenta:

x = s 2-126 0,m

implicito

0 0,m < 1 quindi -2-126 < x < 2-126

Rappresentazione dei Reali “grandi”

1 8 23

s 255 0

Rappresenta: Si può ottenere come risultato di qualche operazione aritmetica (es: divisione per 0).

Se lo si usa come operando in una operazione aritmetica si ha un errore.

quanti reali si rappresentano?

con una parola, cioè 32 bits possiamo rappresentare 232 cose, quindi al più 232 reali, la novità è che questi valori non sono distribuiti uniformemente come gli interi ma sono maggiormente concentrati in vicinanza dello 0 e si diradano sempre più allontanandosi dallo 0.

Distribuzione disuniformeh=2 bits di mantissa e k=3 di esponente.Rappresentazione dell’esponente:

0 000 00 =0 000 01 =0 000 10 =0 000 11 =0 001 00 =0 001 01 =0 001 10 =0 001 11 =0 010 00 =0 010 01 =0 010 10 =0 010 11 =

02-2 ·2-2

2-2 ·2-1

2-2 ·(2-1 +2-2 )2-2 ·1 = 4/322-2 ·(1+2-2 )2-2 ·(1+2-1)2-2 ·(1+2-1 +2-2 )2-1 ·12-1 ·(1+2-2 )2-1 ·(1+2-1) 2-1 ·(1+2-1 +2-2 )

= 0= 0.0625= 0,125= 0,1875= 0,25= 0,3125= 0,375 = 0,4375 = 0,5= 0,625= 0,75= 0,875

312 1 ee k

20 ·120 ·(1+2-2 )20 ·(1+2-1)20 ·(1+2-1 +2-2 )21 ·121 ·(1+2-2 )21 ·(1+2-1) 21 ·(1+2-1 +2-2 )22 ·1 = 422 ·(1+2-2 )22 ·(1+2-1)22 ·(1+2-1 +2-2 )23 ·123 ·(1+2-2 )23 ·(1+2-1)23 ·(1+2-1 +2-2 )

0 011 00 =0 011 01 =0 011 10 =0 011 11 =0 100 00 =0 100 01 =0 100 10 =0 100 11 =0 101 00 =0 101 01 =0 101 10 =0 101 11 =0 110 00 =0 110 01 =0 110 10 =0 110 11 =0 111 00 =

= 1= 1,25= 1,5= 1,75 = 2= 2,5= 3= 3,5= 4= 5= 6 = 7 = 8= 10= 12= 14=

Distribuzione disuniforme cont.

0 8 4 2 1

0 1 0,5

0,2

5

0,1

25

14 12 10

Distribuzione disuniforme cont.