Rappresentazione
dell’Informazione
1
La codifica delle informazioni
codifica
INFORMAZIONI
forma adatta
per essere trattata
dall’elaboratore
DATI
interpretazione
2
Il bit
Si consideri un alfabeto di 2 simboli: ‘0’, ‘1’
Che tipo di informazione si può rappresentare con un bit?
3
La Cavalcata di Paul Revere
Ascoltate
Ascoltatefigli
figlimiei,
miei,vivivoglio
voglioraccontare
raccontaredidiPaul
PaulRevere
Revereeedella
dellasua
suacavalcata
cavalcatadidi
mezzanotte
mezzanottedel
del19
19aprile
aprile1775.
1775.
Coloro
Coloroche
chepotrebbero
potrebberoricordare
ricordarequel
quelmemorabile
memorabilegiorno
giornoeel’anno
l’annosono
sonoormai
ormai
morti
mortitutti.
tutti.
Egli
Eglidisse
dissealalsuo
suoamico
amico“Se
“Segli
gliinglesi
inglesigiungeranno
giungerannodalla
dallaterra
terraoodal
dalmare,
mare,questa
questa
notte
notteappendi
appendiuna
unalanterna
lanternasula
sulacampanile
campaniledella
dellaOld
OldNorth
NorthChurch
Churchcome
come
segnale.
segnale.
Una
Unalanterna
lanternase
sevengono
vengonoda
daterra,
terra,due
duese
sevengono
vengonodal
dalmare.
mare.Io
Iosarò
saròsulla
sullariva
riva
opposta
oppostapronto
prontoaacavalcare
cavalcareeedare
darel’allarme
l’allarmegenerale.
generale.In
Inogni
ognivillaggio
villaggiodel
del
Middlesex
Middlesexeeininogni
ognifattoria,
fattoria,i icontadini
contadinisaranno
sarannopronti
prontiaabattagliare.”
battagliare.”
Entrambe spente (00): Situazione tranquilla
Solo una accesa (01 o 10): Gli inglesi attaccano da terra
Entrambe accese (11): Attacco dal mare
4
Informazioni complesse
Per codificare i nomi delle 4 stagioni bastano 2
bit
Ad esempio:
0 0 per rappresentare Inverno
0 1 per rappresentare Primavera
1 0 per rappresentare Estate
1 1 per rappresentare Autunno
Quanti bit per codificare i nomi dei giorni
della settimana?
5
Bit Necessari
Le macchine hanno vincoli spaziali
E’ necessario conoscere il massimo valore
rappresentabile
Con n bit si può rappresentare al massimo il
numero 2n -1
E’ facile determinare che per poter rappresentare
fino ad X combinazioni diverse, sono necessari
un numero n di bit pari a
log2 X
Dove la notazione
y resitituisce il più piccolo numero
intero maggiore o uguale a y
6
Bit necessari
In generale, con N bit, ognuno dei quali può
assumere 2 valori, possiamo rappresentare
2N informazioni diverse (tutte le possibili
combinazioni di 0 e 1 su N posizioni)
viceversa
Per rappresentare M informazioni dobbiamo
usare N bit, in modo che 2N >= M
7
Overflow
Esiste un limite al numero di bit impiegati per
rappresentare un numero
Dato che la rappresentazione è formata da un numero
finito di bit, se si supera tale limite si ha errore (overflow)
MAX
Numero intero
rappresentato
...
4
3
2
1
1 2 3 4...
Numero intero
8
Codifica binaria
Esiste una particolare aggregazione di bit
che è costituita da 8 bit (28 = 256
informazioni) e prende il nome di byte
Di solito si usano i multipli del byte
Kilo
KB
210 (~ un migliaio, 1024 byte)
Mega
MB
220 (~ un milione, 1KB x 1024)
Giga
GB
230 (~ un miliardo, 1MB x 1024)
Tera
TB
240 (~ mille miliardi, 1GB x 1024)
Peta
PB
250 (~ miliardo miliardi, 1TB x 1024)
9
Digitale o Analogico?
I segnali analogici sono molto sensibili alle interferenze (rumore)
I segnali digitali possono assumere solo due stati
Per un dispositivo è semplice distinguere questi due stati, per cui vie è una
maggiore immunità alle interferenze
10
Perché Digitale?
Una buona foto in bianco e nero presa da un
giornale avrà circa 256 sfumature di grigio
Rappresentazione analogica
256 gradi di luminosità con una lampada
Attenzione alle interferenze provocate dalla nebbia!
Rappresentazione digitale
8 lampade (256 configurazioni diverse)
Ciascuna configurazione sarebbe più sicura anche in caso di
nebbia!
11
Rappresentazione Binaria
codifica
rappresentazione
binaria
informazione
decodifica
Mondo esterno
Computer: memorizzazione,
elaborazione
Analogico Digitale
12
Informazioni
Numeri
Interi positivi
Positivi e negativi
Reali
Testi
Informazioni tradizionali
Immagini fisse
Vettoriali
Bitmap
Audio
Video
Informazioni multimediali
13
Sistemi Numerici
14
Generalità
Per determinare un sistema numerico serve
Un insieme limitato di simboli (le cifre), che
rappresentano quantità prestabilite (1, 2, V, X,
M)
Le regole per costruire i numeri
Sistemi numerici posizionali
Sistemi numerici non posizionali
15
Sistemi Numerici
Sistemi numerici non posizionali
Il valore delle cifre è indipendente dalla
posizione
Es. Numeri romani
Sistemi numerici posizionali
Il valore delle cifre dipende dalla loro posizione
all’interno del numero
Ogni posizione ha un peso
16
Sistemi Numerici Posizionali
Esempio
N = d3d2d1d0 V(N)=d3p3+d2p2+d1p1+d0p0
N Rappresentazione del numero
V(N) Valore del numero
Sistemi a base fissa
pi = ri
r è la base del sistema
17
Il Sistema Decimale
È un sistema numerico posizionale a base
fissa
Il sistema decimale utilizza
r = 10
d = 0;1;2;3;4;5;6;7;8;9
18
Sistema Decimale: Esempio
Cifra meno
significativa
Cifra più
significativa
8427
=
8 103 + 4 102 + 2 101 + 7 100
19
Sistema Binario
Anche il sistema binario è un sistema
numerico posizionale a base fissa
Il sistema binario utilizza
r = 2
d = 0;1
Ogni cifra è detta bit (da BInary digiT)
20
Sistema Binario: Esempio
Bit meno
significativo (LSB)
Bit più
significativo (MSB)
10112
=
1 23 + 0 22 + 1 21 + 1 20 = 1110
21
Decimale a Binario
Es.: 11510 = 11100112
115
2
1
57
2
1
28
2
0
14
2
0
7
2
1
3
2
1
1
2
1
0
22
Somma binaria
La tabella di definizione è:
0+0 = 0
0+1 = 1
1+0 = 1
1+1 = 0
1+1+1= 1
con riporto di 1
con riporto di 1
Esempi
23
Sottrazione binaria
La tabella di definizione è:
0-0
1-0
1-1
0-1
=
=
=
=
0
1
0
1
con prestito di 1 dal
bit di peso superiore
Esempi
24
Altre Basi di Numerazione Comuni
Sistema ottale
r = 8
d = 0,1,2,3,4,5,6,7
Sistema esadecimale
r = 16
d = 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
25
Esadecimale e Binario
Esiste una corrispondenza diretta tra cifre
esadecimali e il corrispondente binario
Esadecimale: 16 cifre
4 bit per rappresentare una cifra esadecimale
110001102
C
6
26
Conversione da binario ad esadecimale
Esiste una corrispondenza diretta tra cifre
esadecimali e il corrispondente binario
100010112
15 = 1111 = F
1000 1011
8
Bh
27
Numeri Negativi
Esistono diverse possibilità di
rappresentazione
Modulo e segno (M&S)
Complemento a 2 (C2)
28
Modulo e Segno
Convenzione per il bit più significativo
0: segno positivo
1: segno negativo
Esempio
+5 00101
-10 11010
Esistono due rappresentazioni per lo ‘0’
+0 00000
-0 10000
29
Complemento a 2
Dato X in base 2 di n bit
1 + NOT(X) è il complemento a 2 di X
Se X=01011, il suo complemento a 2 è
1 + NOT(01011) = 1 + 10100 =10101
Regoletta pratica
Il complemento a 2 si calcola analizzando i bit
del numero a partire da destra: si riportano
invariati tutti gli zeri fino al primo bit a 1, si
riporta invariato questo stesso bit a 1, si
complementano tutti gli altri bit
30
Complemento a 2
Se dn-1 dn-2 … d2 d1 d0 è un numero binario
rappresentato in C2 a n bit, l’equivalente
decimale si calcola come
-2n-1dn-1+2n-2dn-2+…+22d2+21d1+d0
31
Osservazioni sul C2
Unica rappresentazione dello ‘0’
I numeri positivi hanno il bit più significativo
(segno) posto a zero
I numeri negativi sono rappresentati dal
complemento a 2 del corrispondente
numero positivo, segno compreso
Esempio
+310 000112
C2(000112) = 111012
111012 -310
32
Complemento a 2 vs. M&S
Usando modulo e segno
La somma algebrica di numeri positivi e
negativi può generare problemi
Servono sistemi hardware specifici per la
gestione corretta del formato
E' necessario riconoscere il segno dal primo bit
Usando il complemento a due
La sottrazione si esegue con una somma!
33
Intervallo di Valori Rappresentabili
Rappresentazione M&S
-2n-1 + 1 N 2n-1 - 1
Rappresentazione C2
-2n-1 N 2n-1 - 1
34
Rappresentazione Numeri Reali
E’ spesso necessario utilizzare numeri reali
Due rappresentazioni
Virgola Fissa
Virgola Mobile
35
Virgola Fissa
Intero
0
1
0
1
0
0
1
1
= 26 + 24 + 21 + 20= 83
-27 26 25 24 23 22 21 20
Virgola Fissa
0
1
0
1
0
0
0
0
= 2-1 + 2-3 = 0.5 + 0.125 = 0.625
-20 2-1 2-2 2-3 2-4 2-5 2-6 2-7
36
Virgola Mobile
E’ la risposta alla necessità di manipolare
numeri di ordini di grandezza diversi
Notazione scientifica (numeri espressi nella
forma)
X.YYY * 10W
X: parte intera
Y: parte frazionaria
W: esponente
37
Virgola Mobile
Nomenclatura
A = M * BE
M: mantissa
B: base
E: esponente
Necessita di un segno per la mantissa e uno
per l’esponente
38
Virgola Mobile
Forma normalizzata
Numero = ± 1.XXXXXXX * 2a
.XXXXXXX parte frazionaria
a è detto esponente vero
39
Virgola Mobile
Rappresentazione IEEE P754 (32 bit)
1 bit per il segno
8 bit per l’esponente (rappresentazione eccesso 127)
23 per la mantissa (parte frazionaria - normalizzata)
31
30
23
Segno Esponente
S
E
1
8
22
0
Mantissa
F
23
SS
E-127
N
=
(-1)
2
N = (-1) 2E-127
1.F
1.F
40
Virgola mobile
L'esponente influisce principalmente sul
numero massimo (e di conseguenza
minimo).
La mantissa influisce principalmente
sull'approssimazione (ovvero sulla
precisione).
41
Virgola mobile
La procedura standard per la conversione da numero
decimale a numero binario P754 single è la seguente:
Prima di tutto il numero, in valore assoluto, va convertito in
binario.
Il numero va poi diviso (o moltiplicato) per 2 fino a ottenere
una forma del tipo 1,xxxxxx.
Di questo numero viene eliminato l'1 iniziale (per risparmiare
memoria)
Il numero di volte per cui il numero è stato diviso (o
moltiplicato) per 2 rappresenta l'esponente: questo valore
(decimale) va espresso in eccesso 127, ovvero è necessario
sommare 127 e convertire il numero risultante in binario. Nel
caso di rappresentazione a precisione doppia (v. definizione
seguente) il valore dell'esponente viene espresso in eccesso
1023.
42
Virgola mobile
Per esempio, convertiamo il valore − 14,312510 in
binario P754:
Convertiamo prima di tutto il numero: 1410 = 11102 per la
parte intera e 0,312510 = 0,01012. Quindi il numero definitivo
è 1110,01012 (segno escluso).
Dividiamo poi il numero per 2 per ottenere la seguente
notazione: 1110,01012 = 1,11001012 * 23
La mantissa diventa, quindi: 1100101.
Per esprimere l'esponente in eccesso 127, infine: 127 + 3 =
13010 = 100000102
Il numero, alla fine, sarà espresso nel formato:
1 10000010 11001010000000000000000
43
Virgola mobile
0,312510 = 0,01012
Alternativa:
0,3125 / 0,5 = 0,625 → riporto 0
0,625 / 0,5 = 1,25 → riporto 1
0,25 / 0,5 = 0,5
→ riporto 0
→ riporto 1
0,5 / 0,5 = 1
(ovvero 2-1)
44
Virgola mobile
0,312510 = 0,01012
Devo esprimere 0,3125 in forma normalizzata, divido
per 0,5 (ovvero 2-1) fin quando non ottengo un intero:
0,3125 / 0,5 = 0,625 / 0,5 = 1,25 / 0,5 = 2,5 / 0,5 =
5
Ho diviso 4 volte
5=1012
-4
La forma normalizzata sarà data da 1012*2 ,
ovvero 0,01012
Nota bene: dividere per 0,5 equivale a moltiplicare per 2.
45
Virgola mobile
In base al numero di bit che abbiamo a disposizione
possiamo utilizzare tre formati: il formato a precisione
singola (32 bit), il formato a precisione doppia (64 bit)
e il formato a precisione quadrupla (128 bit).
Nel primo caso possiamo scrivere il valore utilizzando 1
bit per il segno, 8 bit per l'esponente e 23 bit per la
mantissa
Nel secondo caso servirà 1 bit per il segno, 11 bit per
l'esponente e 52 per la mantissa.
Nel terzo caso servirà 1 bit per il segno, 15 bit per
l'esponente e 112 per la mantissa.
46
Problemi con la virgola mobile
In generale, questo tipo di numeri si comportano in
modo molto simile ai numeri reali. Tuttavia ciò porta
spesso i programmatori a non considerare
l'importanza di un'adeguata analisi numerica sui
risultati ottenuti.
Ci sono molte incongruenze tra il comportamento dei
numeri in virgola mobile in base 2 impiegati
nell'informatica e quello dei numeri reali, anche in casi
molto semplici (ad esempio la frazione 0,1 che non
può essere rappresentata da nessun sistema binario
in virgola mobile). Per questo non è un formato
impiegato ad esempio in campo finanziario.
47
Numeri speciali
Categoria
Esp.
Mantissa
Zeri
0
0
Numeri
denormalizzati
Numeri normalizzati
0
non zero
1-254
qualunque
Infiniti
255
0
Nan (not a number)
255
non zero
48
Limiti della precisione singola
Esponente
0
1
2
10
11
23
24
127
Minimo
1
2
4
1024
2048
8388608
16777216
1.7014e38
Massimo
1.999999880791
3.99999976158
7.99999952316
2047.99987793
4095.99975586
16777215
33554430
3.4028e38
Precisione
1.19209289551e-7
2.38418579102e-7
4.76837158203e-7
1.220703125e-4
2.44140625e-4
1
2
2.02824096037e31
49
Esercizi
Calcolare la rappresentazione binaria P754
dei seguenti numeri decimali:
+1,58
-34652,6
0,000346526
-4,53 * 10-3
50
Memorizzazione su
Calcolatore e Codici
51
Bit, Byte e Word
L'unità atomica è il bit (BInary DigiT)
L'insieme di 8 bit è detto byte
Word
Tipicamente 16, 32 o 64bit
Insieme di bit la cui dimensione è una
importante caratteristica del calcolatore
considerato. Essa influenza
La larghezza degli indirizzi
La dimensione dei registri del processore
Larghezza dei bus (word o multipli di essa)
52
Intervalli di Variabilità
Bit
Numero di configurazioni: 2
Intervallo di variabilità: {0,1}
Byte
Numero di configurazioni: 256
Intervallo di variabilità: dipende dal tipo di
codifica
53
Intervalli di Variabilità (byte)
Modulo
256 configurazioni
Intervallo di Variabilità: [0, 255]
Modulo e segno
256 configurazioni
Intervallo di Variabilità: [-127, +127]
Complemento a 2
256 configurazioni
Intervallo di Variabilità: [-128, +127]
54
Codifica dei Testi
Si utilizza una tabella (arbitraria)
Standard oggi (quasi) universalmente
riconosciuto
Codice ASCII (American Standard Code for
Information Interchange)
Ogni carattere (simbolo) è codificato con 7 bit
128 simboli diversi
55
Tabella dei Codici ASCII
56
Codice ASCII - note
I caratteri alfabetici sono consecutivi e in
ordine (alfabetico)
La distanza tra una lettera minuscola e la
corrispondente maiuscola è costante
Le cifre decimali sono consecutive e in
ordine
(da 0 a 9)
Grazie alla codifica numerica è possibile
dire che B = A + 1 oppure che A = a - 32
57
Codice ASCII Esteso
Si utilizzano 8 bit
256 simboli diversi
58
UNICODE
Abbiamo considerato il codice
Extended ASCII: 8 bit per carattere
È stato basato dal codice ASCII: 7 bit per carattere
Il codice ASCII non include à, è, é, ì, ò, ù, per esempio
Un altro codice
UNICODE, 16 bit per carattere (Extended ASCII +
caratteri etnici)
216 = 65.536 simboli
59
UNICODE - Font
In informatica
il tipo di
carattere o
font è un
insieme di
caratteri
tipografici
caratterizzati
e accomunati
da un certo
stile grafico.
60
Font
the quick brown fox jumps over a lazy dog
the quick brown fox jumps over a lazy dog
the quick brown fox jumps over a lazy dog
the quick brown fox jumps over a lazy
dog
the quick brown fox jumps over a
lazy dog
the quick brown fox jumps over a lazy dog
thequick brown fox jumps over a lazy dog
61
Rappresentazione di parole
Abbiamo visto come rappresentare i singoli
caratteri, ma le parole?
In informatica le parole sono “stringhe”,
ovvero concatenazioni di caratteri.
62
Stringhe
Supponiamo di voler codificare la parola
“STUDENTE”:
STUDENTE
=
83 ; 84 ; 85 ; 68 ; 69 ; 78 ; 84 ; 69
Ovvero la parola studente è composta da 8
caratteri in sequenza.
63
Suono digitale
Formato standard per i CD audio
• frequenza di campionamento di 44'100 Hz
• quantizzazione su 65'536 livelli
(un campione viene codificato su 16 bit)
Un secondo di musica stereo richiede 44'100 campioni di 16 bit (2
byte) ciascuno per due canali, quindi 176'400 byte.
L’errore che si commette nella ricostruzione del segnale sonoro è
difficilmente rilevabile da parte di un orecchio umano.
Foto digitali
Per la codifica digitale delle immagini le operazioni di
campionamento e quantizzazione si applicano nello spazio invece
che nel tempo.
Il campionamento consiste nel dividere l’immagine in sottoinsiemi
(pixel, cioè picture element), per ognuno dei quali si dovrà
prelevare un campione che si considera rappresentativo del
colore di tutto il sottoinsieme.
La quantizzazione è la codifica del colore associato a ogni pixel: i
più recenti formati utilizzano 32 bit (4 byte) per pixel: 8 bit per
ognuna delle tre componenti fondamentali (RGB: red, green,
blue) e altri 8 per gestire le trasparenze.
Memoria necessaria per immagini non compresse (bitmap)
•
•
•
•
•
•
per un’immagine
per un’immagine
per un’immagine
per un’immagine
per un’immagine
…
di 640480 pixel servono 1'228'800 byte;
di 800600 pixel servono 1'920'000 byte;
di 1024768 pixel servono 3'145'728 byte;
di 12801024 pixel servono 5'242'880 byte;
di 16001200 pixel servono 7'680'000 byte;
Il successo del digitale
Rumore: effetto dell’ambiente sul
supporto.
Tensione (V)
Quanto un supporto è “immune”
5
al rumore?
• Codifica analogica:
analogica ogni
configurazione è lecita dal punto di
vista informazionale e quindi risulta
impossibile distinguere il rumore dal
segnale.
• Codifica digitale:
digitale un valore binario è
associato a un insieme di
configurazioni valide quindi si può
• riconoscere il rumore che porta in
configurazioni non lecite
• trascurare il rumore che non fa uscire il
segnale dall’insieme associato alla stessa
configurazione
4
3
2
1
0
1 binario
Non
lecito
0 binario
Come ridurre il numero di bit
Esempio
• successione di un milione di caratteri, ognuno scelto dall’insieme {A, C,
G, T};
T}
• la frequenza dei quattro caratteri all’interno della successione non è
uguale: A si presenta nel 50% dei casi, C nel 25%,
25% G e T solo nel 12.5%
dei casi.
Codifica digitale a lunghezza costante
• due bit per ciascuno dei simboli, per esempio: A = 00,
A = 00 C = 01,
C = 01 G = 10 e
T = 11;
T = 11
• la lunghezza complessiva della successione è quindi pari a 2 milioni di
bit.
bit
Codifica a lunghezza variabile (che tenga conto della
distribuzione)
• A = 0,
A = 0 C = 10,
C = 10 G = 110 e T = 111;
T = 111
• la lunghezza complessiva della successione è di 1.75 milioni di bit
(1×50% + 2×25% + 3×12.5% + 3×12.5%) bit/carattere × 1 milione di
caratteri
Il cambiamento di codifica permette di ridurre il numero di bit
utilizzato senza perdere informazione.
La compressione dei dati
Gli algoritmi di compressione dei dati possono essere distinti in
due categorie fondamentali
• Compressione lossless,
lossless se non provoca la perdita di informazione
• Compressione lossy,
lossy se provoca la perdita di informazione
Gli algoritmi di compressione lossless sfruttano le regolarità nei
dati
• RLE (Run Length Encoding): successioni di n simboli uguali vengono
rappresentati con una coppia <simbolo, n>
• Tecniche basate su dizionario: sequenze di simboli ripetute trovate
analizzando i dati sono sostituite con simboli elementari memorizzando
le corrispondenze in un dizionario
Gli algoritmi di compressione lossy sono specifici per i diversi
domini applicativi.
Un semplice esempio con
dizionario
Compressione lossless con tecnica basata su un
dizionario
• Testo di esempio:
“I re di Francia della dinastia Carolingia sono: Carlo
II, Luigi II di Francia, Luigi III di Francia, Carlomanno
di Francia, Carlo III detto il grosso, Odo, Carlo III
detto il semplice, Roberto I di Francia, Rodolfo Duca
di Borgogna, Luigi IV di Francia, Lotario di Francia,
Luigi V di Francia” (lunghezza: 292 caratteri)
Analisi delle regolarità presenti nel testo:
• Si individuano le sequenze ripetute (parole) contando
le ripetizioni e si compila il dizionario (vedere
tabella)
• Si assegna un simbolo che la sostituisce ad ogni
parola
• Il testo diventa:
“I re 1 2 della 1nastia Carolingia sono: 5 3, 4 3 1 2, 4
3I 1 2, 5manno 1 2, 5 3I 6 7 grosso, Odo, 5 3I 6 7
semplice, Roberto I 1 2, Rodolfo Duca 1 Borgogna, 4
IV 1 2, Lotario 1 2, 4 V 1 2” (lunghezza: 187 caratteri
+ 35 caratteri per il dizionario = 222 caratteri - 76%
della lunghezza originaria)
Indice
Parola
N
1
di
1
0
2
Francia
8
3
II
5
4
Luigi
4
5
Carlo
4
6
detto
2
7
il
2