DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Codifica binaria
dell’informazione
Marco D. Santambrogio – [email protected]
Ver. aggiornata al 13 Agosto 2014
Un obiettivo per domarli tutti…
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
2
Obiettivi
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Rappresentazione dell’informazione
• Da decimale a binario
 Contiamo con i numeri binari
• Limiti della rappresentazione
• Complemento a due
3
Codifica binaria
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Chi ha “inventato” il bit?
Claude Shannon nel 1948 nel paper:
“A Mathematical Theory of Communication”
4
Codifica binaria
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Alfabeto binario: usiamo dispositivi con solo due stati
• Problema: assegnare un codice univoco a tutti gli oggetti
compresi in un insieme predefinito (e.g. studenti)
• Quanti oggetti posso codificare con k bit:





1 bit  2 stati (0, 1)  2 oggetti (e.g. Vero/Falso)
2 bit  4 stati (00, 01, 10, 11)  4 oggetti
3 bit  8 stati (000, 001, …, 111)  8 oggetti
…
k bit  2k stati  2k oggetti
• Quanti bit mi servono per codificare N oggetti:
 N ≤ 2k  k ≥ log2N  k = log2N
(intero superiore)
• Attenzione:
ipotesi implicita che i codici abbiano tutti la stessa lunghezza
5
Esempio di codifica binaria
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Problema: assegnare un codice binario univoco
a tutti i giorni della settimana
• Giorni della settimana:
 N = 7  k ≥ log27  k = 3
• Con 3 bit possiamo ottenere 8 diverse
configurazioni:
 Ne servono 7, quali utilizziamo?
 Quale configurazione associamo a quale giorno?
• Attenzione: ipotesi che i codici abbiano tutti la
stessa lunghezza
6
I giorni della settimana in binario (1)
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Lunedì
Lunedì
Martedì
Domenica
Sabato
Venerdì
Mercoledì
Lunedì
Giovedì
Mercoledì
Martedì
Sabato
Domenica
Martedì
Lunedì
Giovedì
Mercoledì
Sabato
Venerdì
Martedì
Mercoledì
Giovedì
Venerdì
Sabato
Venerdì
Giovedì
Domenica
1 bit
2 “gruppi”
2 bit
4 “gruppi”
Domenica
3 bit
8 “gruppi”
7
I giorni della settimana in binario (2)
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Lunedì
Martedì
Domenica
Giovedì
Giovedì
Giovedì
Sabato
Sabato
Martedì
Sabato
Martedì
Venerdì
Domenica
Mercoledì
Giovedì
Mercoledì
Sabato
Domenica
Mercoledì
Martedì
Domenica
Mercoledì
Venerdì
Venerdì
Lunedì
Venerdì
Lunedì
Lunedì
1 bit
2 “gruppi”
2 bit
4 “gruppi”
3 bit
8 “gruppi”
8
Stampa dei caratteri
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
9
Quale è il codice ASCII di ‘a’?
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Ma quindi, quanto vale ‘a’?
97, 353, 609
Siamo sicuri?
97,
353=97+256,
609=353+256=97+256+256
97 = 97 + 256*0
353 = 97+256*1
609 = 97+256*2
10
97+256*i… quindi…
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Quanti caratteri ci sono?
 256
• Con quanti bit rappresento 256 numeri?
 log2256 = log228 = 8
11
Codifica binaria dei caratteri
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Quanti sono gli oggetti compresi nell’insieme?




26 lettere maiuscole + 26 minuscole  52
10 cifre
Circa 30 segni d’interpunzione
Circa 30 caratteri di controllo (EOF, CR, LF, …)
circa 120 oggetti complessivi 
k = log2120 = 7
• Codice ASCII: utilizza 7 bit e quindi può
rappresentare al massimo 27=128 caratteri
 Con 8 bit (= byte) rappresento 256 caratteri (ASCII esteso)
 Si stanno diffondendo codici più estesi (e.g. UNICODE) per
rappresentare anche i caratteri delle lingue orientali
12
ASCII su 7 bit
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
010 sp
011 0
100 @
101 P
110 `
111 p
!
1
A
Q
a
q
"
2
B
R
b
r
#
3
C
S
c
s
$
4
D
T
d
t
%
5
E
U
e
u
&
6
F
V
f
v
'
7
G
W
g
w
(
8
H
X
h
x
)
9
I
Y
I
Y
*
:
J
Z
j
z
+
;
K
[
k
{
,
<
L
\
l
|
=
M
]
m
}
.
/
>
?
N O
^
_
n o
~ canc
1111
0000
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
13
bit, Byte, KiloByte, MegaByte, …
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
bit = solo due stati, “0” oppure “1”.
Byte = 8 bit, quindi 28 = 256 stati
KiloByte [KB] = 210 Byte = 1024 Byte ~ 103 Byte
MegaByte [MB]
= 220 Byte = 1'048'576 Byte ~
106 Byte
GigaByte [GB]
= 230 Byte ~ 109 Byte
TeraByte [TB]
= 240 Byte ~ 1012 Byte
PetaByte [PB]
= 250 Byte ~ 1015 Byte
ExaByte [EB] = 260 Byte ~ 1018 Byte
14
Da Hobbit a Hobbyte
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
15
Da base 10 a base 2
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Dato un numero K rappresentato in base
dieci, la sua rappresentazione in base due
sarà del tipo bn bn-1bn-2 … b1b0
 bi: cifra binaria
• Per convertire un numero in base dieci nel
corrispondente in base due si devono trovare
i resti delle divisioni successive del numero K
per due
16
Da base 10 a base 2
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• 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
17
Da base 10 a base 2
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• 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 = 1 x 21 + 1 x 20 con resto 0
2
1 x 21 + 1 x 20
= 1 x 20 con resto 1
2
1 x 20
= 0 con resto 1
2
18
Da base 10 a base 2
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• 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
 Larappresentazione binaria del numero 34510 è 1010110012
19
Altre basi: ottale, esadecimale
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• 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
20
Operazioni su numeri binari
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• 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
21
Operazioni su numeri binari
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• 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
10110101+
1000110=
11111011
111+
11=
1010
22
Codici a lunghezza fissa
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• 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)
23
Il fattoriale
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Dato n, intero positivo, si definisce n
fattoriale e si indica con n! il prodotto dei
primi n numeri interi positivi minori o uguali
di quel numero. In formule
• Nota:
 0! = 1
 1! = 1
 2! = 2, 3! = 6,…
24
Il fattoriale: codice
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
25
Proviamo ad eseguirlo…
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
WAT
26
Codici a lunghezza fissa
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• 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)
27
Codici a lunghezza fissa
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• 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
28
Codici a lunghezza fissa
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
•
Esempio di overflow nel sistema binario
dovuto a operazioni aritmetiche:


•
5 + 4 = 9 (in sistema decimale)
abbiamo usato solo una cifra decimale per il
risultato
Ricordiamo: 510 = 1012, 410 = 1002
101+
100=
1001
(in sistema binario)
Errore: overflow
(non può essere codificato
910 = 10012 con tre bit)
29
Rappresentazione dei numeri
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• 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
30
Rappresentazione dei numeri
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• 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
31
Numeri negativi
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• 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
32
Numeri negativi - problemi
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Con 3 bit avremo:
Problemi:
000
+0
001
+1
010
+2
011
+3
100
-0
101
-1
110
-2
111
-3


Il numero 0 ha due
rappresentazioni
Per l’operazione di
somma si deve tener
conto dei segni degli
addendi
0010+
(+2)
1011=
(-3)
1 1 0 1 (-5 ERRATO)
33
Il fattoriale: codice
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
34
Proviamo ad eseguirlo…
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
int sono interi con segno
35
Il fattoriale: unsigned int
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
36
Proviamo ad eseguirlo…
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
37
Numeri negativi: Complemento a due
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• 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
38
Complemento a due
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• 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
39
Complemento a due
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• 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
40
Complemento a due
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• 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
41
Complemento a due
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Con 3 bit avremo:
Esempi di addizione:
000
+0
001
+1
010
+2
011
+3
100
-4
101
-3
110
-2
111
-1
0010+
1011=
1 1 0 1 (-3)
(+2)
(-5)
0111+
1011=
0 0 1 0 (+2)
(+7)
(-5)
Nel secondo esempio,
l’overflow è ignorato
42
Exe 1: Codifica dell’informazione
DIPARTIMENTO DI ELETTRONICA E 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?
43
Exe 2: Codifica dei suoni
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Quanto spazio occupa un suono della durata
di 30 secondi campionato a 100 Hz (100
campioni al secondo), in cui ogni campione
occupa 4 byte?
44
Exe 3: Codifica dei numeri
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Codificare il numero 17510 nella
corrispondente rappresentazione binaria
• Ordinare in modo crescente i seguente
numeri: 10510 , 128 , 1001100002 , 1001110
• Codificare il numero negativo –1510 nella
rappresentazione in complemento a due
45
Exe 4: Codifica delle immagini
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Quanti bit 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?
46
Fonti per lo studio + Credits
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Fonti per lo studio
 Informatica arte e mestiere, S. Ceri, D. Mandrioli, L.
Sbattella, McGrawHill
• Capitolo 11
 Introduzione ai sistemi informatici, D. Sciuto, G. Buonanno,
L. Mari, 4a Ed, McGrawHill
• Capitolo 2
 The Art & Craft of Computing, S. Ceri, D. Mandrioli, L.
Sbattella, Addison-Wesley
• Capitolo 13
• Credits
 P. Spoletini
 J. Sproston
47