Sei sulla pagina 1di 22

Codifica dell’informazione

Codifica dell’informazione
z L’informazione gestita dai sistemi di
elaborazione deve essere codificata
z per poter essere memorizzata, elaborata,
scambiata, …
z E’ necessario codificare sia dati che istruzioni
z Algoritmo = insieme di istruzioni che operano su dati
z Per scrivere un programma è necessario codificare
dati e istruzioni
z L’esecutore automatico deve essere in grado di:
z Memorizzare istruzioni e dati
z Manipolare istruzioni e dati
2
Informazione e codifica
z La stessa informazione si può codificare in modi
differenti

z Stessa codifica per informazioni differenti

Sistemi di codifica
z Detto anche “codice”
z Usa un insieme di simboli di base (alfabeto)
z I simboli dell’alfabeto possono essere combinati
ottenendo differenti configurazioni (o “stati”),
distinguibili l’una dall’altra
z Associa ogni configurazione ad una particolare
entità di informazione
z la configurazione diventa un modo per
rappresentarla

4
Sistemi di codifica: numeri (es.)
z Alfabeto
z cifre: “0”, “1”, “2”, …, “9”
z separatori: decimale (“,”), migliaia (“.”)
z segni: positivo (“+”), negativo (“-”)
z Regole di composizione (sintassi)
z definiscono le combinazioni ammissibili (ben formate)
z 12.318,43: OK
z 12,318,43: ERRORE!
z Codice (semantica)
z Associano ad ogni configurazione un’entità di informazione
z 2.318,43 = 2×103+ 3×102+ 1×101+ 8×100+ 4×10-1+ 3×10-2
z Sistemi diversi possono usare lo stesso alfabeto
z 123,456 = 1×102+ 2×101 + 3×100 + 4×10-1+ 5×10-2+ 6×10-3 [IT]
z 123,456 = 1×105+ 2×104+ 3×103+ 4×102+ 5×101 + 6×100 [UK]

Codifica binaria
z Codifica binaria: usa un alfabeto di 2 simboli
z Usata nei sistemi informatici (livello fisico)
z si usa una grandezza fisica (luminosità, tensione
elettrica, corrente elettrica) per rappresentare
l’informazione
z Solo 2 simboli per ridurre la probabilità di errore
z tanti più simboli si devono distinguere e tanto meno
la rivelazione sarà affidabile in presenza di “rumore”

6
Codifica binaria
z BIT (BInary digiT)
z unità elementare di informazione rappresentabile con
dispositivi elettronici
z con 1 bit si possono rappresentare 2 stati
z 0/1, on/off, si/no

z Combinando più bit si può codificare un numero


maggiore di stati
z con 2 bit possono rappresentare 4 stati
zcon K bit si possono rappresentare 2K stati
zQuanti bit servono per codificare N stati?

zN ≤ 2K → K ≥ log2N → K = ⎡log2N⎤

Codifica binaria: unità di misura

z BYTE = 8 bit
z può rappresentare 28= 256 stati
z KiloByte (KB) = 210 byte = 1024 byte ≅ 103 byte
z MegaByte (MB) = 220 byte ≅ 106 byte
z GigaByte (GB) = 230 byte ≅ 109 byte
z TeraByte (TB) = 240 byte ≅ 1012 byte

8
Es.: i giorni della settimana in binario

Codifica dei numeri naturali


z Sistema di numerazione posizionale con base β
z β simboli (cifre) corrispondono ai numeri da 0 a
β-1
z i numeri naturali maggiori o uguali a β possono
essere rappresentati da una sequenza di cifre
z Se un numero naturale N è rappresentato in
base β dalla sequenza di n cifre
an-1 an-2 …a1 a0
allora N può essere espresso come segue:

10
Codifica dei numeri naturali

z Esempio:
z 13 può essere espresso mediante potenze di 2
come:

13 = 1×8+1×4+0×2+1×1

z cioè può essere rappresentato dalla sequenza di bit


(stringa binaria)

1 1 0 1

11

Conversione decimale-binario

12
Codifica dei numeri naturali
z Quindi
• Numero = sequenza di bit (codifica in base 2)
• Con K bit si rappresentano i numeri da 0 a 2K-1
z Esempi:
• 2 = sequenza 1 0
• 3 = sequenza 1 1
• 4 = sequenza 1 0 0
• .......

13

Esercizi

14
Esercizi (2)

15

Esercizi (3)

z Proprietà:
z Ciascuna cifra ottale (esadecimale) corrisponde ad
un gruppo di 3 (4) cifre binarie
16
Parte frazionaria
z Per convertire la sola parte frazionaria, si moltiplica il
numero per 2, sottraendo 1 dal prodotto se è maggiore di 1
e continuando a moltiplicare per 2 il risultato così ottenuto
fino a quando non si ottiene un risultato uguale a 0 oppure
un risultato già ottenuto in precedenza
0,35 · 2 = 0,7
z Il numero binario si ottiene scrivendo la 0,7 · 2 = 1,4
serie delle parti intere dei prodotti 0,4 · 2 = 0,8
ottenuti, iniziando dal primo 0,8 · 2 = 1,6
z Se si ottiene un risultato già ottenuto in 0,6 · 2 = 1,2
precedenza, il numero sarà periodico, 0,2 · 2 = 0,4
anche se non lo era in base decimale

(0,35)10 = (0,010110)2

17

Codifica dei numeri interi

z Vari tipi di codifiche:


z Modulo e segno
z Complemento a 1

z Complemento a 2
z comunemente usata nei sistemi reali

18
Codifica dei numeri interi
Modulo e segno
z 1 bit per rappresentare esplicitamente il segno
z 0 Æ +
z 1 Æ -
z Gli altri bit rappresentano il valore assoluto del
numero come binario puro
z Esempi (su 8 bit):
z -2 Æ 10000010
z +5 Æ 00000101

19

Codifica dei numeri interi


Modulo e segno (2)
z Note:
z Segno completamente disgiunto dal valore del
numero
z Posizione del bit del segno, entro la stringa, irrilevante
z Difetti:
z Il valore zero ha due distinte rappresentazioni:
z 1000000000 Æ -0
z 0000000000 Æ +0
z Non permette di utilizzare le usuali regole di calcolo
per eseguire le operazioni:
+5 0 0000101
-5 1 0000101
0 1 0001010
20
Codifica dei numeri interi
Complemento a uno
z Approccio
z La rappresentazione dei numeri negativi si ottiene
dalla rappresentazione del numero positivo
invertendo i bit
z Esempi (su 8 bit compreso il bit del segno) :
z +5 Æ 0 0000101
z -5 Æ 1 1111010
z Difetti
z Stessi difetti della rappresentazione in modulo e
segno (+0Æ 00000000 -0Æ11111111)

21

Codifica dei numeri interi

Complemento a due
z Approccio
z Un numero è rappresentato con la codifica del suo
complemento a 2 (positivo)
z in una codifica a K bit: CK(x) = 2K + x
z Esempio (K = 4, 2K = 16)
z x = +5
z CK(+5) = 16 + 5 = 21 → 10101
z x = -5
z CK(-5) = 16 - 5 = 11 → 1011
z Osservazione
z Anche in questo caso il primo bit indica il segno
z 0 = positivo
z 1 = negativo
22
Codifica dei numeri interi
Complemento a due (2)
z Algoritmo per calcolare la rappresentazione
in complemento a 2 di un numero negativo:
1. si rappresenta il valore assoluto in binario
2. si invertono tutte le cifre (1->0 e viceversa)
3. si somma 1
z Esempio
z 5 → 0101
z -5 → 1011= 1010+1

23

Codifica dei numeri interi


Osservazioni
z Rappresentazione dello 0
z modulo e segno: rappresentazione ambigua
z +0 = 00000000 - 0 = 10000000
z complemento a uno: rappresentazione ambigua
z +0 = 00000000 - 0 = 11111111
z complemento a due: rappresentazione univoca
z il complemento a due di 0…0 è ancora 0…0
z Intervallo di rappresentazione con K bit
z modulo e segno: [ -(2K-1-1), + 2K-1-1 ]
z complemento a uno: [ -(2K-1-1), + 2K-1-1 ]
z complemento a due: [ -2K-1, + 2K-1-1 ]

24
Operazioni algebriche:
somma e sottrazione su interi
Somme fra “cifre”:
0+0=0 1+0=1 0+1=1 1 + 1 = 10

← riporto prestito →
1 1 0

1 0 1 1 0+ 1 1 1 0-

1 0 1 0 1= 0 1 0 1=

1 0 1 0 1 1 1 0 0 1

25

Codifica dei numeri razionali


z Fixed point (virgola fissa)
z Un numero razionale è rappresentato come una
coppia di numeri interi: la parte intera e la parte
decimale
z 12,52 → <12; 52>
z Floating point (virgola mobile)
z Un numero razionale e’ rappresentato come un
intero moltiplicato per una opportuna potenza di10,
cioè con una coppia <mantissa, esponente>
z 12,52 = 1252/100 = 1252 * 10-2 → <1252; -2>

26
Operazioni algebriche: Errori
z Problema
z Gli elaboratori elettronici utilizzano un numero fissato di bit per
rappresentare un dato tipo di numeri
z Un’operazione può produrre un valore non rappresentabile: il
numero di bit disponibili è minore di quelli necessari
z Overflow
z Il valore assoluto del risultato è maggiore della massima
quantità rappresentabile
z L’approssimazione con la massima quantità rappresentabile
potrebbe implicare un notevole errore
z Underflow
z Il risultato è minore (in valore assoluto) della minima quantità
rappresentabile
z Nella rappresentazione in virgola mobile, corrisponde ad un
overflow dell’esponente
z Il risultato è approssimato con 0 (e si segnala la condizione)
27

Codifica di caratteri
z Si associa un codice ad ogni simbolo dell’alfabeto
z Codifica ASCII
z Caratteri speciali, punteggiatura, a-z, A-Z, 0-9
z Utilizza 7 bit (128 caratteri)
z I codici ASCII estesi usano 8 bit (256 caratteri)
z Codifica EBCDIC
z Utilizza 8 bit (256 caratteri)
z Codifica UNICODE
z Utilizza 16 bit (65536 caratteri)
z I primi 128 caratteri sono gli stessi di ASCII
z Gli altri corrispondono ad altri alfabeti (greco,
cirillico,…)
z Non copre i simboli (oltre 200.000) di tutte le lingue!
28
Codice ASCII (7 bit)

29

Compressione dei dati


z Vantaggio:
z risparmio di risorse per memorizzazione e trasmissione
z Esempio: codifica a lunghezza variabile
z Alfabeto: {A, C, G, T}
z Una sequenza ATTACCG… di 1 milione caratteri da rappresentare
z Codifica a lunghezza fissa: memoria richiesta = 2 milioni di bit
z A=00, C=01, G=10, T=11
z ATTACCG… Æ 00111100010110…
z Diverse frequenze dei simboli:
z f(A)=50%, f(C)=25%, f(G)=12.5%, f(T)=12.5%
z Si scelgono codici dei simboli con lunghezze (in bit) inversamente
proporzionali alle frequenze:
z A=0, C=10, G=110, T=111
z 1 x 50% + 2 x 25% + 2 x 3 x 12.5% x 106 = 1.75 milioni di bit
z Attenzione:
z la nuova sequenza binaria deve essere decodificabile!

30
Codifica di dati multimediali

z Applicazioni multimediali
z elaborano anche tipi di informazione
differenti da testi e numeri
z Esempi di dati multimediali:
z diagrammi

z immagini e filmati

z suoni e sequenze sonore

31

Codifica di immagini
z Immagini digitalizzate = sequenze di bit!
z L’immagine viene discretizzata, cioè
rappresentata con sequenze di pixel
z Ogni pixel ha associato un numero che descrive
un particolare colore (o tonalità di grigio)

32
Codifica di immagini
z Consideriamo un'immagine in bianco e nero,
senza ombreggiature o livelli di chiaroscuro

z Si suddivide l’immagine con una griglia formata


da righe orizzontali e verticali a distanza
costante

33

Codifica di immagini

z pixel (picture element)


z ogni quadratino derivante dalla suddivisione
dell’immagine
z Codifica di un pixel:
z il simbolo “0” viene utilizzato per la codifica di
un pixel corrispondente ad un quadratino
bianco (in cui il bianco è predominante)
z il simbolo “1” viene utilizzato per la codifica di
un pixel corrispondente ad un quadratino
nero (in cui il nero è predominante)

34
Codifica di immagini
z Poiché una sequenza di bit è lineare, si deve definire
una convenzione per ordinare i pixel della griglia
z Assumiamo che i pixel siano ordinati dal basso verso l'alto
e da sinistra verso destra

022 123 024 025 026 027 028


015 116 117 018 019 020 021
0 8 1 9 110 111 112 013 014
0 1 0 2 0 3 04 0 5 0 6 0 7
z La rappresentazione della figura è data dalla stringa:
0000000 0111100 0110000 0100000

35

Codifica di immagini
z Approssimazione:
z nella codifica si ottiene un'approssimazione della
figura originaria
z non sempre il contorno della figura coincide con le
linee della griglia
z Riconvertendo in immagine la stringa
0000000011110001100000100000 si ottiene:

36
Codifica di immagini
z La rappresentazione sarà più fedele
all'aumentare del numero di pixel
z ossia al diminuire delle dimensioni dei quadratini
della griglia in cui è suddivisa l'immagine

zz

37

Immagini con toni di grigio


z Le consuete immagini “in bianco e nero” hanno delle
sfumature (livelli di intensità di grigio)
z Per codificare immagini con sfumature:
z si fissa un insieme di livelli (toni) di grigio, cui si assegna
convenzionalmente una rappresentazione binaria
z per ogni pixel si stabilisce il livello medio di grigio e si
memorizza la codifica corrispondente a tale livello
z Per memorizzare un pixel non basta un solo bit
z con 4 bit si possono rappresentare 24=16 livelli di grigio
z con 8 bit ne possiamo distinguere 28=256,
z con K bit ne possiamo distinguere 2K

38
Immagini a colori

z Analogamente possono essere codificate le


immagini a colori:
z bisogna definire un insieme di sfumature di
colore differenti, codificate mediante una
opportuna sequenza di bit
z codifica bitmap
z Indica la rappresentazione di un'immagine
mediante la codifica dei pixel

39

Immagini a colori
z Il numero di byte richiesti dipende da
z risoluzione
z numero di colori che ogni pixel può assumere
z Es: per distinguere 256 colori sono necessari 8 bit per
la codifica di ciascun pixel
z la codifica di un'immagine formata da 640×480 pixel
richiederà 2457600 bit (307200 byte)
z I monitor tipici utilizzano
z risoluzione: 640×480, 1024×768, 1280×1024
z numero di colori per pixel: da 256 fino a 16 milioni
z Tecniche di compressione lossy
z riducono notevolmente lo spazio occupato dalle immagini

40
Compressione JPEG (esempio)

Codifica Bitmap Fattore qualità


qualità 90% ( 253 KB )
- 800 x 600
- 16,8 mln colori (24 bit)
dimensione = 1.440.000 byte
≈ 1406 KB

Fattore qualità
qualità 10% ( 12 KB ) Fattore qualità
qualità 1% ( 9 KB )

41

Codifica di filmati
z Immagini in movimento sono memorizzate come
sequenze di fotogrammi
z In genere si tratta di sequenze compresse di
immagini
z ad esempio si possono registrare solo le variazioni tra
un fotogramma e l’altro
z Esistono vari formati compressi (comprendenti
l’audio):
z mpeg
z divx
z quicktime
z realMedia

42
Codifica di sequenze sonore
z L’onda sonora (analogica) viene misurata ad
intervalli regolari (campionamento)
z Minore è l’intervallo di campionamento e maggiore
è la qualità del suono
z CD musicali:
z 44000 campionamenti al secondo, 16 bit per
campione.
z Alcuni formati
z wav
z midi
z mp3 (compresso)

43

Potrebbero piacerti anche