Informatica
Lezione 3
Psicologia dello sviluppo e dell'educazione (laurea
magistrale)
Anno accademico: 2007-2008
Codifica dei numeri
•
•
Il codice ASCII consente di codificare le cifre
decimali da “0” a “9” fornendo in questo modo una
rappresentazione dei numeri
Per esempio: il numero 324 potrebbe essere
rappresentato dalla sequenza di byte:
00110011 00110010 00110100
3
2
4
•
•
Ma questa rappresentazione non è efficiente e
soprattutto non è adatta per eseguire le operazioni
aritmetiche sui numeri
Sono stati pertanto studiati codici alternativi per
rappresentare i numeri in modo efficiente ed
eseguire le usuali operazioni aritmetiche
Codifica dei numeri
(il sistema decimale)
•
La rappresentazione dei numeri con il sistema
decimale può essere utilizzata come spunto per
definire un metodo di codifica dei numeri all’interno
degli elaboratori
–
–
–
Esempio: la sequenza di cifre 324 viene interpretato
come:
3 centinaia + 2 decine + 4 unità
324 = 3 x 100 + 2 x 10
+4x1
324 = 3 x 102
+ 2 x 101 + 4 x 100
3 è la cifra più significativa
4 è la cifra meno significativa
Codifica dei numeri
(il sistema decimale)
•
In generale la sequenza cn cn-1cn-2 … c1c0 (ogni “ci”
è una cifra compresa tra “0” e “9”) viene
interpretata come:
La cifra meno
significativa
La cifra più
significativa
c0 x 100 +
(c0 unità)
c1 x 101 +
(c1 decine)
c2 x 102 +
(c2 centinaia)
…
cn-1 x 10n-1 +
cn x 10n
Codifica dei numeri
(il sistema decimale)
• La numerazione decimale quindi utilizza una
notazione posizionale basata sul numero 10
• La notazione posizionale può essere
utilizzata in qualunque altro sistema di
numerazione con base diversa di 10
– Base: il numero di cifre disponibile nel sistema
– In base 10, usiamo le dieci cifre 0, 1, 2, 3, 4, 5, 6,
7, 8, 9
Codifica dei numeri
• Nel sistema di numerazione binario (base 2) i
numeri vengono codificati utilizzando le due
cifre 0 e 1
• Nel sistema di numerazione ottale (base 8) i
numeri vengono codificati utilizzando le otto
cifre 0, 1, 2, 3, 4, 5, 6, 7
• Nel sistema di numerazione esadecimale
(base 16) i numeri vengono codificati
utilizzando le sedici cifre 0, 1, 2, 3, 4, 5, 6, 7,
8, 9, A, B, C, D, E, F
Codifica dei numeri
(il sistema binario)
• In analogia con il caso decimale la sequenza
cn cn-1cn-2 … c1c0 (ogni “ci” è la cifra “0” o la
cifra “1”) rappresenterà il numero
La cifra meno
significativa
La cifra più
significativa
c0 x 20 +
c1 x 21 +
c2 x 22 +
… +
cn-1 x 2n-1 +
cn x 2n
Codifica dei numeri
• Caso generale: considerare un sistema con base b
• La sequenza cn cn-1cn-2 … c1c0 (ogni “ci” è una cifra
del sistema) rappresenterà il numero
La cifra meno
significativa
La cifra più
significativa
c0 x b0 +
c1 x b1 +
c2 x b2 +
… +
cn-1 x bn-1 +
cn x bn
Codifica dei numeri
• Caso generale: considerare un sistema con base b
• La sequenza cn cn-1cn-2 … c1c0 (ogni “ci” è una cifra
del sistema) rappresenterà il numero
La cifra meno
significativa
La cifra più
significativa
c0 x b0 +
c1 x b1 +
c2 x b2 +
… +
cn-1 x bn-1 +
cn x bn
Se necessario,
convertiamo una
cifra ci in un numero
(per esempio, nel
sistema
esadecimale, “A”
significa “10”, “B”
significa “11”, e così
via)
Codifica dei numeri
(il sistema binario)
• Esempio: la sequenza “1011” in base 2 denota il numero
1 x 23 + 0 x 22 + 1 x 21 + 1 x 20 = 11 (in base 10)
• Esempio: la sequenza “10011” in base 2 denota il numero
1 x 24 + 0 x 23 + 0 x 22 + 1 x 21 + 1 x 20 = 19 (in base 10)
• Per evitare ambiguità si usa la notazione
10112 = 1110, 100112 = 1910
Altri basi: ottale, esadecimale
• Sistema ottale
– Utilizza una notazione posizionale basata su otto
cifre (0,1,…,7) e sulle potenze di 8
– Esempio: 1038 = 1 x 82 + 0 x 81 + 3 x 80 = 6710
• Sistema esadecimale
– Utilizza una notazione posizionale basata su
sedici cifre (0,1,…,9,A,B,C,D,E,F) e sulle potenze
di 16
– Esempio: 10316 = 1 x 162 + 0 x 161 + 3 x 160 = 25910
– Esempio: AC416 = 10 x 162 + 12 x 161 + 4 x 160 = 275610
Esadecimale: esempio
• HTML: il linguaggio principale usato per definire l’aspetto di una
pagina web (il colore dello sfondo, il layout, le tabelle ecc.)
• In HTML, rappresentiamo i codici per i colori rosso, verde e blu
usando le cifre esadecimali tra 00 e FF (0016 = 010 e FF16 =
25610)
• I colori predefiniti di HTML (da
http://en.wikipedia.org/wiki/Web_colors):
Esadecimale: esempio
• Per esempio:
– Blu: 0000FF16 = 0000000000000000111111112
• Si può anche definire altri colori
– Esempio dell’uso:
<font color=#FF8E2A>Ciao</font>
Conversione dalla base 10 alla
base 2
• Dato un numero N rappresentato in base dieci, la sua
rappresentazione in base due sarà del tipo cm cm-1cm-2
… c1c0 (le “ci” sono cifre binarie)
• Per convertire un numero in base dieci nel
corrispondente in base due si devono:
– Trovare i resti delle divisioni successive del numero N per
due
– Leggere i resti in ordine inverso per ottenere la
rappresentazione binaria di N (dalla cifra più significativa alla
cifra meno significativa)
Conversione dalla base 10 alla
base 2
• Intuitivamente: ottenere la rappresentazione
binaria dalla cifra meno significativa alla cifra
più significativa
cm cm-1cm-2 … c1c0
Resto di N/2
Conversione dalla base 10 alla
base 2
• Intuitivamente: ottenere la rappresentazione
binaria dalla cifra meno significativa alla cifra
più significativa
cm cm-1cm-2 … c1c0
Resto di (N/2)/2
Conversione dalla base 10 alla
base 2
• Intuitivamente: ottenere la rappresentazione
binaria dalla cifra meno significativa alla cifra
più significativa
cm cm-1cm-2 … c1c0
Resto di N/(2m-1)
Conversione dalla base 10 alla
base 2
• Intuitivamente: ottenere la rappresentazione
binaria dalla cifra meno significativa alla cifra
più significativa
cm cm-1cm-2 … c1c0
Resto di N/(2m)
Conversione dalla base 10 alla
base 2
• Intuitivamente: ottenere la rappresentazione
binaria dalla cifra meno significativa alla cifra
più significativa
cm cm-1cm-2 … c1c0
Resto di N/(2m+1)
Conversione dalla base 10 alla
base 2
• Esempio: il numero 610:
6/2 = 3 resto 0
3/2 = 1 resto 1
1/2 = 0 resto 1
• Leggendo i resti dal basso verso l’alto, si ha
che la rappresentazione binaria del numero
610 è 1102
• Per una corretta verifica basta riconvertire il
risultato alla base 10
– Cioè, calcolare 1 x 22 + 1 x 21 + 0 x 20
Conversione dalla base 10 alla
base 2
•
Perché 1102 = 610 ?
– Considerare le seguenti equazioni:
• Se b>c, c x b0 = 0 resto c
b
• a1 + a 2 = a1 + a2
b
b
b
• c x bN = c x bN-1
b
Conversione dalla base 10 alla
base 2
•
Perché 1102 = 610 ?
c0 x 20 = 0 resto c0
2
• c x 20 = 0 resto c
2
•a1 + a2 = a1 + a2
b
b
b
• c x bN = c x bN1
c1 x 21 + c0 x 20 = c1 x 20 resto c0
2
b
c2 x 22 + c1 x 21 + c0 x 20 = c2 x 21 + c1 x 20 resto c0
2
…
Conversione dalla base 10 alla
base 2
• Perché 1102 = 610 ?
6/2 = 3 resto 0
3/2 = 1 resto 1
1/2 = 0 resto 1
0 x 20 +
1 x 21 +
1 x 22
=6
1 x 22 + 1 x 21 + 0 x 20
0
2
1 x 21 + 1 x 20
2
1 x 20
2
= 1 x 21 + 1 x 20 con resto
= 1 x 20 con resto 1
= 0 con resto 1
Conversione dalla base 10 alla
base 2
• Perché 1102 = 610 ?
6/2 = 3 resto 0
3/2 = 1 resto 1
1/2 = 0 resto 1
0 x 20 +
1 x 21 +
1 x 22
=6
1 x 22 + 1 x 21 + 0 x 20
0
2
1 x 21 + 1 x 20
2
1 x 20
2
= 1 x 21 + 1 x 20 con resto
= 1 x 20 con resto 1
= 0 con resto 1
Conversione dalla base 10 alla
base 2
• Esempio: il numero 34510:
345/2 = 172 resto 1
172/2 = 86 resto 0
86/2 = 43 resto 0
43/2 = 21 resto 1
21/2 = 10 resto 1
10/2 = 5 resto 0
5/2 = 2 resto 1
2/2 = 1 resto 0
1/2 = 0 resto 1
• Leggendo i resti dal basso verso l’alto (in quanto si
ottengono a partire dalla cifra meno significativa,
l’unità), si ha che rappresentazione binaria del numero
34510 è 1010110012
Conversione dalla base 2 alla
base 10
• Sia cm cm-1cm-2 … c1c0 un numero rappresentato in
base 2, usiamo:
cm x 2m + cm-1 x 2m-1 + cm-2 x 2m-2 + … + c1 x 21 + c0 x 20 = N10
• Esempio: 1010110012
1 x 28 + 0 x 27 + 1 x 26 + 0 x 25 + 1 x 24 + 1 x 23 +
0 x 22 + 0 x 21 + 1 x 20
=
256 + 64 + 16 + 8 + 1
=
34510
Conversione dalla base 10 alla
base 2
• Esempio: il numero 34510:
345/2 = 172 resto 1
172/2 = 86 resto 0
86/2 = 43 resto 0
43/2 = 21 resto 1
21/2 = 10 resto 1
10/2 = 5 resto 0
5/2 = 2 resto 1
2/2 = 1 resto 0
1/2 = 0 resto 1
• Leggendo i resti dal basso verso l’alto (in quanto si
ottengono a partire dalla cifra meno significativa,
l’unità), si ha che rappresentazione binaria del numero
34510 è 1010110012
Conversione dalla base 2 alla
base 10
• Sia cm cm-1cm-2 … c1c0 un numero rappresentato in
base 2, usiamo:
cm x 2m + cm-1 x 2m-1 + cm-2 x 2m-2 + … + c1 x 21 + c0 x 20 = N
• Esempio: 1010110012
1 x 28 + 0 x 27 + 1 x 26 + 0 x 25 + 1 x 24 + 1 x 23 +
0 x 22 + 0 x 21 + 1 x 20
=
256 + 64 + 16 + 8 + 1
=
345
Operazioni su numeri binari
• Vediamo solo il caso della addizione nella
codifica binaria:
– Si mettono in colonna i numeri da sommare
– Si calcola il riporto ogni volta che la somma
parziale supera il valore 1
• Addizione:
0+0=0
0+1=1
1+0=1
1+1=0
con riporto 0
con riporto 0
con riporto 0
con riporto 1
Operazioni su numeri binari
• Addizione:
0+0=0
0+1=1
1+0=1
1+1=0
con riporto 0
con riporto 0
con riporto 0
con riporto 1
• Esempi:
1+
1=
10
101+
11=
1000
Possiamo anche
concludere che, ad
esempio,
1+1+1
= (1 + 1) + 1
= (0 con riporto 1) + 1
= 1 con riporto 1
10110101+
1000110=
11111011
111+
11=
1010
Codici a lunghezza fissa
• Se si usa un numero prestabilito di cifre si ha
un codice a lunghezza fissa
• In questo modo si pone anche un limite al
numero massimo rappresentabile
• Esempio: qual è il numero più grande
rappresentabile con 4 cifre?
–
–
–
–
In base 10:
In base 2:
In base 16:
In base 8:
9999
1111
FFFF
7777
(=1510)
(=6553510)
(=409510)
Codici a lunghezza fissa
• Numeri maggiori di quello massimo
rappresentabile causano problemi di
overflow
– Ovvero per essere rappresentati richiedono più
cifre di quelle a disposizione
• Esempio: 4 cifre
–
–
–
–
In base 10:
In base 2:
In base 16:
In base 8:
9999 + 1
1111 + 1
FFFF + 1
7777 + 1
= 1000010
= 100002 (=1610)
= 1000016 (=6553610)
= 100008 (=409610)
Codici a lunghezza fissa
• In generale, con N cifre a disposizione e base
b il più grande numero (intero positivo)
rappresentabile si può esprimere come
bN – 1
• Esempio: N=4
–
–
–
–
In base 10:
In base 2:
In base 16:
In base 8:
9999
1111
FFFF
7777
= 104 - 1
= 24 - 1
= 164 - 1
= 84 - 1
Codici a lunghezza fissa
•
Esempio di overflow nel sistema binario
dovuto a operazioni aritmetiche:
– 5 + 4 = 9 (in sistema decimale)
– Abbiamo usato solo un cifre decimale per il
risulto
•
Ricordiamo: 510 = 1012
101+
100=
1001
(in sistema binario)
,
410 = 1002
Errore: overflow
(non può essere codificato
910 = 10012 con tre bit)
Codifica dei numeri
• Codificare il numero 13210 nella
corrispondente rappresentazione binaria
• Ordinare in modo crescente i seguente
numeri:
–
–
–
–
–
10410
128
100112
1000100002
1001110
Scarica

mag_lez3 - Dipartimento di Informatica