Informatica
Lezione 3
Scienze e tecniche psicologiche dello sviluppo e
dell'educazione
Anno accademico: 2005-2006
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
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 ?
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
2
1 x 21 + 1 x 20
2
1 x 20
2
= 1 x 21 + 1 x 20 con resto 0
= 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 = 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
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 = 67
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 = 259
Esempio: AC416 = 10 x 162 + 12 x 161 + 4 x 160 = 2756
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
1
1
+
+
+
+
0
1
0
1
=
=
=
=
0
1
1
0
con
con
con
con
riporto 0
riporto 0
riporto 0
riporto 1
Operazioni su numeri binari
Addizione:
0
0
1
1
+
+
+
+
0
1
0
1
=
=
=
=
0
1
1
0
con
con
con
con
riporto 0
riporto 0
riporto 0
riporto 1
Esempi:
1+
1=
10
101+
11=
1000
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
In
In
In
base
base
base
base
10:
2:
16:
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
In
In
In
base
base
base
base
10:
2:
16:
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
In
In
In
base
base
base
base
10:
2:
16:
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
,
410 = 1002
Errore: overflow
(non può essere codificato
910 = 10012 con tre bit)
(in sistema binario)
Rappresentazione dei numeri
Possiamo rappresentare i numeri usando un numero
variabile di cifre (che dipende dal valore che si vuole
rappresentare)


Come? Introduciamo un simbolo speciale che indica dove
termina la rappresentazione di un numero e inizia quella del
numero successivo
Esempio: 1001#11#1 (codice a lunghezza variabile, #
separatore)
Esistono anche “codici di espansione”, che
permettono di definire dei codici a lunghezza variabile
senza far uso del carattere di separazione
Rappresentazione dei numeri
In realtà, una semplice codifica binaria come
quella discussa fino ad ora non è sufficiente,
per due motivi:


Numeri negativi
Numeri con la virgola
Per questi numeri vengono utilizzate delle
rappresentazioni differenti

Per esempio “complemento a due” per
rappresentare i numeri negativi
Rappresentazione dei numeri
negativi
Si può pensare di usare un bit per il segno


“0” identifica “+”
“1” identifica “-”
Gli altri bit vengono usati per codificare il
valore assoluto (modulo) del numero
[-22+1, 22-1]
[0, 23-1]
-3
-2
-1
0
1
2
3
4
5
6
7
Rappresentazione dei numeri
negativi
Con 3 bit avremo:
000
+0
001
+1
010
+2
011
+3
100
-0
101
-1
110
-2
111
-3
Problemi:


Il numero 0 ha due
rappresentazioni
Per l’operazione di
somma si deve tener
conto dei segni degli
addendi
0010+
1011=
1101
(+2)
(-3)
(-5 ERRATO)
Rappresentazione dei numeri
negativi
Complemento a due:



Il bit più significativo rappresenta il segno del numero: 0 per
i numeri positivi e 1 per i numeri negativi
La rappresentazione di un numero positivo si ottiene
codificando il valore assoluto del numero con i bit restanti
La rappresentazione di un numero negativo si ottiene in tre
passi:
 Si rappresenta in complemento a due il numeri positivo con lo
stesso valore assoluto del numero negativo da codificare
 Si invertono tutti i bit in tale rappresentazione (01,10)
 Si somma uno al risultato ottenuto al passo precedente
Complemento a due
Esempio (con 4 bit a disposizione):


La codifica di +5 è 0101
La codifica del numero –5 avviene in tre passi:
 La rappresentazione in complemento a due di +5 è 0101
 Invertendo tutti i bit si ottiene 1010
 Sommando 1 si ottiene 1011, la rappresentazione in
complemento a due di -5
Complemento a due
Per ottenere un numero con segno data la
sua rappresentazione in complemento a due:


Se il primo bit è 0 il numero è positivo: per
calcolarne il valore assoluto si esegue la
conversione da binario a decimale
Se il primo bit è 1 il numero è negativo:
 Si ignora il primo bit
 Si invertono i restanti bit
 Si converte il numero da binario a decimale
 Si somma uno al numero ottenuto per ottenere il valore
assoluto del numero negativo
Complemento a due
Esempio: 1011




Si esclude il primo bit
Invertendo 011 si ottiene 100 che è codifica di 4
Va aggiunto 1 per ottenere il valore assoluto 5
Il risultato è quindi -5
Complemento a due
Con 3 bit avremo:
000
+0
001
+1
010
+2
011
+3
100
-4
101
-3
110
-2
111
-1
Esempi di addizione:
0010+
1011=
1101
(+2)
(-5)
(-3)
0111+
1011=
0010
(+7)
(-5)
(+2)
Nel secondo
esempio, l’overflow
è ignorato
Codifica dell’informazione
Quanti bit si devono utilizzare per
rappresentare 300 informazioni distinte?
Quanti byte occupa la parola “psicologia” se
la si codifica utilizzando il codice ASCII?
Dati 12 bit per la codifica, quante
informazioni distinte si possono
rappresentare?
Codifica delle immagini
Quanti byte occupa un’immagine di 100 x 100
pixel in bianco e nero?
Quanti byte occupa un’immagine di 100 x 100
pixel a 256 colori?
Se un’immagine a 16777216 di colori occupa
2400 byte, da quanti pixel sarà composta?
Codifica dei suoni
Quanto spazio occupa un suono della durata
di 10 secondi campionato a 100 Hz (100
campioni al secondo), in cui ogni campione
occupa 4 byte?
Codifica dei numeri
Codificare il numero 13210 nella
corrispondente rappresentazione binaria
Ordinare in modo crescente i seguente
numeri: 10410 , 128 , 1000100002 , 1001110
Codificare il numero negativo –1210 nella
rappresentazione in complemento a due
Scarica

Lezione 3 - Dipartimento di Informatica