...

Lucidi - Dipartimento di Informatica

by user

on
Category: Documents
26

views

Report

Comments

Transcript

Lucidi - Dipartimento di Informatica
Informatica Generale
Susanna Pelagatti
email: [email protected]
Ricevimento:
Mercoledì ore 14.30-17.30
presso
Dipartimento di Informatica, Via Buonarroti, 2
stanza 346 DE Tel. 050.2212.772
o per posta elettronica
Pagina web del corso:
http://www.di.unipi.it/~susanna/IG02/
1
Codifica e Rappresentazione
dell’informazione
• Cosa abbiamo visto :
Rappresentazione binaria
Codifica dei numeri (interi positivi,
interi con segno, razionali ….)
• Cosa vedremo oggi:
Codifica dei caratteri ,Codifica delle
immagini ,Compressione dei dati
Codifica dei suoni
2
La rappresentazione dei numeri
all’interno di un computer (5)
• Razionali
– numero finito di cifre periodiche dopo la virgola (ad
esempio 3.12 oppure 3.453
– rappresentazione solitamente su 4/8 byte
– rappresentazione in virgola fissa : riservo X bit per la
parte frazionaria
Parte intera
Parte frazionaria
– es : con 3 bit per la parte intera e 2 per quella
frazionaria 011.11, 101.01
3
La rappresentazione dei numeri
all’interno di un computer (6)
• Come si converte in base 10 una rappresentazione
in virgola fissa
– es :
101.01 = 1* 22 + 0 * 21 + 1 * 20 + 0 * 2-1 + 1 * 2-2 =
= 4 + 1+ 0.25 = 5.25
dove 2-1 = 1/2 = 0.5, 2-2 = 1/22 = 0.25
e in generale 2-n = 1/2n
4
La rappresentazione dei numeri
all’interno di un computer (7)
• Problemi della rappresentazione in virgola fissa
– overflow
– undeflow quando si scende al di sotto del minimo
numero rappresentabile
• es. vediamo in base 10, con 2 cifre riservate alla parte
frazionaria 0.01 / 2 = 0.005 non rappresentabile usando solo
due cifre
5
La rappresentazione dei numeri
all’interno di un computer (8)
• Problemi della rappresentazione in virgola fissa
(cont.)
– spreco di bit per memorizzare molti ‘0’ quando lavoro
con numeri molto piccoli o molto grandi
• es. vediamo in base 10, con 5 cifre per la parte intera e 2
cifre riservate alla parte frazionaria
10000.00 oppure 00000.02
– i bit vengono usati più efficientemente con la
notazione esponenziale o floating point (virgola
mobile)
6
La rappresentazione dei numeri
all’interno di un computer (9)
• Rappresentazione in virgola mobile
– idea : quando lavoro con numeri molto piccoli uso
tutti i bit disponibili per rappresentare le cifre dopo la
virgola e quando lavoro con numeri molto grandi le
uso tutte per rappresentare le cifre in posizioni elevate
– questo permette di rappresentare numeri piccoli con
intervalli minori fra loro rispetto ai numeri grandi
– questo riduce gli errori nel calcolo a parità di bit
utilizzati
7
La rappresentazione dei numeri
all’interno di un computer (10)
• Rappresentazione in virgola mobile (cont.)
0
Numeri rappresentabili in virgola fissa
0
Numeri rappresentabili in virgola mobile
8
La rappresentazione dei numeri
all’interno di un computer (11)
• Rappresentazione in virgola mobile (cont.)
– ogni numero N è rappresentato da una coppia
(mantissa M, esponente E) con il seguente significato
N = M * 2E
– esempi:
1. in base 10, con 3 cifre per la mantissa e 2 cifre per
l’esponente riesco a rappresentare
349 000 000 000 = 3.49 * 1011
con la coppia (3.49,11) perché M = 3.49 ed E = 11
9
La rappresentazione dei numeri
all’interno di un computer (12)
• Rappresentazione in virgola mobile (cont.)
– esempi:
2. in base 10, con 3 cifre per la mantissa e 2 per l’esponente
riesco a rappresentare
0.000 000 002 = 2.0 * 10-9
con la coppia (2.0,-9) perché M = 2.0 ed E = -9
– sia 0.000 000 002 che 349 000 000 000 non sono
rappresentabili in virgola fissa usando solo 5 cifre
decimali !!!
10
Rappresentazione di un insieme
finito di oggetti
• Vogliamo rappresentare i giorni della
settimana :
{Lu, Ma, Me, Gio, Ve, Sa, Do}
usando sequenze 0 e 1
• Questo significa costruire un ‘codice’, cioè
una tabella di corrispondenza che ad ogni
giorno associa una opportuna sequenza
• In principio possiamo scegliere in modo del
tutto arbitrario….
11
Rappresentazione di un insieme
finito di oggetti (2)
• Una possibile codifica binaria per i giorni
della settimana
Lunedì
Martedì
Mercoledì
Giovedì
Venerdì
Sabato
Domenica
0100010001
001
1100000
1
101010
111111
000001
12
Rappresentazione di un insieme
finito di oggetti (3)
• Problema : la tabellina di corrispondenza fra
codifiche tutte di lunghezza diversa
– spreco di memoria
– devo capire come interpretare una sequenza di
codifiche
– 110000011 = Me Gio Gio
– 110000011 = Gio Gio Do Gio
• Di solito si usa un numero di bit uguale per
tutti : il minimo indispensabile
13
Rappresentazione di un insieme
finito di oggetti (4)
• Per rappresentare 7 oggetti diversi servono
almeno 3 bit (minima potenza di due che
supera 7 è 8= 23) quindi :
000
001
010
011
100
101
Lunedì
Martedì
Mercoledì
Giovedì
Venerdì
Sabato
110 Domenica
111 non ammesso
14
Rappresentazione di caratteri e
stringhe
• I caratteri sono un insieme finito di oggetti e
seguono la strategia vista per i giorni della
settimana
• Perché due diversi calcolatori si possano
parlare correttamente è necessario che usino
lo stesso codice
15
Rappresentazione di caratteri e
stringhe (2)
• Codifiche di uso comune :
– il codice ASCII (American Standard code For
Information Interchange) su 7 o 8 bit
– il codice UNICODE su 16 bit (più recente,
permette di rappresentare anche alfabeti diversi
e simboli per la scrittura di lingua orientali)
• Le stringhe sono generalmente sequenze di
caratteri terminate in modo particolare
16
Rappresentazione di immagini
• Le immagini sono un ‘continuo’ e non sino
formate da sequenze di oggetti ben definiti
come i numeri e le stringhe
• Bisogna quindi prima ‘discretizzarle’ ovvero
trasformarle in un insieme di parti distinte
che possono essere codificate separatamente
con sequenze di bit
• Consideriamo prima immagini fisse (foto etc
…)
17
Rappresentazione di immagini (2)
• Immagini ‘bitmap’ :
1. l’immagina viene scomposta in una griglia di
elementi detti pixel (da picture element)
000000000000000000000000
000000000011111111000000
000000000010000010000000
000000000010000100000000
000000000010001000000000
000000000010010000000000
000000000010100000000000
000000000011000000000000
000000000010000000000000
codifica
immagine
18
Rappresentazione di immagini (3)
• Immagini ‘bitmap’ :
2. Ogni pixel è rappresentato da uno o più bit
Rappresentazione
di un pixel
000000000000000000000000
000000000011111111000000
000000000010000010000000
000000000010000100000000
000000000010001000000000
000000000010010000000000
000000000010100000000000
000000000011000000000000
000000000010000000000000
19
Rappresentazione di immagini (4)
• Rappresentazioni dei pixel :
– la rappresentazione in ‘toni di grigio’ : un byte
per pixel, con 256 gradazioni di grigio per ogni
punto (immagini bianco e nero), o più byte per
pixel, per avere più gradazioni possibili
– rappresentazione a colori RGB (red, green,blu) :
comunemente 3 byte per pixel che definiscono
l’intensità di ciascun colore base. In questo
modo ho circa 16 milioni di colori diversi
definibili
20
Rappresentazione di immagini (5)
• Problema :
– la rappresentazione accurata di una immagine dipende
• dal numero di pixel (definizione)
• dalla codifica del pixel
– … e richiede generalmente molta memoria, ad esempio :
tipo
imm. televisiva
SVGA
foto
defin
numero colori num. byte
720x625
256
440 KB
1024x768
65536
1.5 MB
15000x10000
16milioni
430 MB
21
Rappresentazione di immagini (6)
• Quindi si cerca di ‘risparmiare’ memoria :
– con l’uso di una ‘tavolozza’ (palette) che contiene il
sottoinsieme dei colori rappresentabili che compare in
una foto
• ogni pixel codifica un indice all’interno della tavolozza
– con tecniche di compressione che non codificano ogni
pixel in modo autonomo ma cercano di raggruppare i le
aree che hanno caratteristiche comuni
• Formati più usati : TIFF (tagged image file format),
GIF (graphics interchange format), JPEG (Joint
photographers expert group)
22
Fly UP