Rappresentazione dei dati. Rappresentazione digitale dei dati Memoria del calcolatore è finita...
-
Upload
eliodoro-cuomo -
Category
Documents
-
view
214 -
download
0
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.