Codifica
dell’Informazione
Problema
• Abbiamo dell’informazione (testi, numeri, immagini,
ecc.) che vogliamo rappresentare in un calcolatore.
Vincolo
• Per motivi tecnologici un calcolatore lavora solo con
due valori 0 e 1 (spento / acceso).
codifica
codifica
informazione
rappresentazione
decodifica
Nel caso dei sistemi di calcolo è stata introdotta la
rappresentazione digitale
• bit (binary digit - cifra binaria): 0 o 1
Per poter rappresentare un numero maggiore di
informazioni si usano sequenze di bit (8 bit=1 Byte)
Esempio: 00 01 10 11
Codifica dell’ informazione
codifica
rappresentazione
binaria dei dati
informazione
decodifica
Mondo esterno
Computer: memorizzazione,
Elaborazione dei dati
Il concetto di informazione
un foglio
cosparso
di macchie
Configurazione 1
Configurazione 2
Non esiste informazione senza
supporto
• L’informazione è “portata da”, o “trasmessa su”, o
“memorizzata in”, o “contenuta in” qualcosa; questo
“qualcosa” però non è l’informazione stessa.
• Ogni supporto ha le sue caratteristiche in quanto
mezzo su cui può essere scritta dell’informazione
– alcuni supporti sono particolarmente adatti alla
trasmissione di informazione, ma non alla sua
memorizzazione (aria),
– per altri supporti vale il viceversa (compact disc)
Informazione e supporti (1)
La stessa informazione può essere
scritta su supporti differenti.
10
11
10
9
8
7
6
Informazione e supporto (2)
• Distinguere informazione e supporto fisico è
distinguere tra “entità logiche” ed “entità fisiche”:
– l’informazione richiede un supporto fisico, ma non
coincide con esso;
– l’informazione è un’entità non interpretabile in
termini di materia-energia. Essa è sottoposta alle
leggi della fisica solo perché basata su un
supporto fisico.
Configurazioni e codici
• Per interpretare le differenti configurazioni del supporto in
termini di informazione è necessario conoscere il codice (cioè
le regole di conversione) che a ogni configurazione ammessa
del supporto associa un’entità di informazione.
• La definizione di un codice comporta che siano identificati in
modo non ambiguo l’insieme delle possibili configurazioni del
supporto e l’insieme delle possibili entità di informazione a
cui ci si vuole riferire.
• Variando il codice è possibile riferirsi a entità di
informazione differenti utilizzando uno stesso supporto
fisico. Es. codifica di caratteri alfanumerici o codifica di
un’immagine su un cd
Esempio: il telegrafo
• Supporto fisico: conduttore in cui transita corrente continua
• Entità di informazione: “punti” e “linee”, che rappresentano le
lettere dell’alfabeto
• Codice = regola che specifica la corrispondenza:
– transita per 1 s  punto
– transita per 2 s  linea
– non transita per 1 s  separa punti e linee di una stessa
lettera
– non transita per 2 s  separa due lettere
• “c’è per 1 s, non c’è per 1 s, c’è per 2 s” = “punto linea”.
• Codice Morse = relazione tra lettere e sequenze di punti linee:
– punto linea  lettera “A”
– linea punto punto punto  lettera “B”
– linea punto linea punto  lettera “C”
– ecc.
Codifica dati e istruzioni
• Per scrivere un programma è
necessario rappresentare istruzioni e
dati in un formato tale che l’esecutore
automatico (computer) sia capace di
– memorizzare istruzioni e dati;
– manipolare istruzioni e dati.
Rappresentazione binaria
• L’entità minima di informazione che
possiamo trovare all’interno di un
elaboratore prende il nome di bit
– Binary digit – cifra binaria
– Un bit può assumere due valori (0 e 1)
bit, Byte, KiloByte, MegaByte, …
bit = solo due stati, 0 oppure 1.
Byte = 8 bit, quindi 28 = 256 stati o combinazioni di 8 bit
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
Perché la rappresentazione
binaria?
• I due simboli (0 e 1) possono
essere rappresentate da:
– Due stati di polarizzazione di
una sostanza magnetizzabile
– Due stati di carica elettrica di
una sostanza
– passaggio/non passaggio di
corrente attraverso un cavo
conduttore o un circuito
integrato
– passaggio/non passaggio di
luce attraverso un cavo in
fibra ottica
Codifica dell’informazione
• Per poter rappresentare un numero maggiore di
informazione si usano sequenze di bit
• Per esempio, per rappresentare quattro informazioni
diverse possiamo utilizzare due bit che ci permettono
di ottenere quattro configurazione distinte
00
01
10
11
Il processo secondo cui si fa corrispondere ad
un’informazione una sequenze di bit prende il nome
codifica dell’informazione
Codifica binaria
• Esempio: un esame può avere quattro
possibili esiti: ottimo, discreto,
sufficiente, insufficiente
• Codifico (due bit):
– ottimo con
– discreto con
– sufficiente con
– insufficiente con
00
01
10
11
Codifica binaria
• Esempio: otto colori: nero, rosso, blu,
giallo, verde, viola, grigio, arancione
• Codifico (tre bit):
–
–
–
–
–
–
–
–
nero con
rosso con
blu con
giallo con
verde con
viola con
grigio con
arancione con
000
001
010
011
100
101
110
111
Codifica binaria
• Il processo secondo cui si fa corrispondere ad
una informazione una configurazione di bit
•
•
•
•
Con 2 bit si codificano 4 informazioni (22)
Con 3 bit si codificano 8 informazioni (23)
………
Con N bit si codificano 2N informazioni
Codifica dell’informazione
• Problema inverso: quanti bit ci vogliono per
rappresentare M informazioni diverse?
2N >= M
• Esempio: dovendo rappresentare 1.000 informazioni
diverse
Quanti bit dobbiamo avere a disposizione ?
La rappresentazione interna delle
informazioni
Codifica dell'Informazione
 L'architettura di un calcolatore impone delle regole di
conversione tra le rappresentazioni "umane" delle
informazioni e quella binaria.
 Le
informazioni
che
essenzialmente di due tipi:
 numeriche
 alfanumeriche.
l'uomo
gestisce
sono
INFORMAZIONE
ALFANUMERICA
NUMERICA
Non soggetta a calcoli
Codifica tabellare
ASCII, Unicode
Soggetta a calcoli
Sistemi di numerazione
BINARIO, Esadecimale, Ottale
Codifica Numerica
Un sistema numerico è determinato da:
 Un insieme limitato di simboli (cifre)
 Le regole che devono essere applicate per costruire i numeri
 Non Posizionali: il valore delle cifre è indipendente dalla loro
posizione (es. IV nella numerazione romana vale 4 non 15);
 Posizionali: ad ogni posizione della cifra all'interno della
rappresentazione è associato un peso.
Di particolare importanza sono i sistemi numerici di tipo posizionale e per
questo motivo saranno gli unici che considereremo.
Codifica Numerica di Tipo Posizionale
Nei sistemi numerici posizionali il numero (non negativo) è
rappresentato da una sequenza di n cifre:
Per esempio nel sistema numerico decimale, le cifre sono 10:
0,1,2….9
Ogni cifra ha un valore (peso) diverso a seconda della posizione
Ad esempio nel sistema numerico decimale, la cifra di posizione
3 pesa 103
Il valore numerico si ottiene sommando i prodotti delle cifre per il
rispettivo peso.
Ad esempio nel sistema decimale:
61.974 = 6 x104 + 1x 103 + 9 x102 + 7x 101 + 4x 100
Codifica Numerica di Tipo
Posizionale
I numeri da rappresentare utilizzati nei calcolatori sono:
numeri interi positivi e relativi (con segno)
numeri reali (floating point)
Codifica Numeri Interi Positivi
Esempio: si converta in binario il numero intero positivo 8
8
4
0
2
0
1
0
0
1
bit meno significativo (LSB)
bit più significativo (MSB)
Il numero binario è: 1 0 0 0
MSB
LSB
Codifica Numeri Interi Positivi
Esempio: si converta in binario il numero intero positivo 35541
35541:2
17770
8885
4442
2221
1110
555
277
138
69
34
17
8
4
2:2
1:2
0
Il numero binario è: 1000101011010101
1
0
1
0
1
0
1
1
0
1
0
1
0
0
0
1
Codifica Numeri Interi Positivi
Esempio: si voglia convertire in decimale il numero binario:
1000101011010101
1*215+0*214+0*213+0*212+1*211+0*210+1*29+0*28+1*27+1*26
+0*25+1*24+0*23+1*22+0*21+1*20=
32768+2048+512+128+64+16+4+1=35.541
Codifica in base 16
Molto spesso per risparmiare spazio, invece della notazione binaria viene
usata quella esadecimale (ossia su base 16).
La conversione da binario a esadecimale
è immediata: occorre semplicemente
dividere il numero binario (formato
sempre da multipli interi di 8 bit) in
gruppi di 4 bit, partendo dal bit meno
significativo.
Ad ogni gruppo viene sostituita la
corrispondente
cifra
esadecimale,
ricavabile dalla tabella a fianco
Decimale
Binario
Esadecimale
0
0000
0
1
0001
1
2
0010
2
3
0011
3
4
0100
4
5
0101
5
6
0110
6
7
0111
7
8
1000
8
9
1001
9
10
1010
A
11
1011
B
12
1100
C
13
1101
D
14
1110
E
15
1111
F
Codifica in base 16
Esempio: si rappresenti il numero binario 10001010110101012
in esadecimale.
Il precedente numero viene decomposto nei seguenti gruppi da
4 bit, partendo dal bit meno significativo:
 0101, che corrisponde nella tabella a 5
1101, che corrisponde nella tabella a D
1010, che corrisponde nella tabella a A
1000, che corrisponde nella tabella a 8
Dunque il numero in esadecimale e' 8AD516.
1000 1010 1101 0101
La conversione esadecimale  binario avviene in modo
analogo eseguendo la conversione in gruppi di 4 bit alla volta.
Conversione Decimale  Esadecimale
Esempio: si rappresenti il numero 345 in esadecimale
345:16
Resto 9
21:16
Resto 5
1:16
Resto 1
Risultato: 34510

15916
Codifica Alfanumerica
L’insieme dei caratteri alfanumerici: lettere dell'alfabeto e dalle dieci
cifre decimali. A questi vanno aggiunti diversi altri simboli come lo
spazio, i segni di interpunzione, i simboli per indicare il passaggio alla
riga o alla pagina successiva, ecc.
Questo insieme di caratteri alfanumerici può essere facilmente
rappresentato attribuendo in maniera univoca a ciascuno dei suoi
elementi un numero intero (codice).
Osserviamo che il numero delle lettere dell'alfabeto inglese sono 26, per
un totale di 52, considerando anche quelle maiuscole. Aggiungiamo le
dieci cifre numeriche, una quarantina di simboli extra, arriviamo ad un
totale di un centinaio di simboli da rappresentare.
Tale numero suggerisce che soli 7 bit sono sufficienti per rappresentare
l'insieme dei caratteri alfanumerici
E' necessario che la rappresentazione dei simboli sia la stessa in tutto il
mondo, pena la totale incomunicabilità. E', dunque, necessario l'adozione
di una comune rappresentazione.
Codifica Alfanumerica
Codifica ASCII
 La codifica ASCII, prende il nome da American Standard Code for
Information Interchange.
 Tale codifica si basa sull'utilizzo di 7 bit per un totale di
128 simboli rappresentabili.
 Da notare che i caratteri dell'alfabeto e le cifre numeriche
successive hanno codice anch'esso successivo (ad esempio a ha
codice 97, b codice 98, c codice 99, il numero 0 ha codice 48, il
numero 1 codice 49, etc.)
 Esempio: tra le più utilizzate codifiche ASCII (entro i primi 128
simboli) vi sono:
 ~ (tilde) codice 126
 { codice 123
 } codice 125
La codifica binaria di un testo avviene dunque seguendo lo schema
seguente:
Codifiche Alfanumeriche derivate dalla Codifica ASCII
Esistono numerose estensioni della codifica ASCII.
Tutte le estensioni della codifica ASCII non modificano tale codifica ma
aggiungono altri 128 simboli
(Ascii esteso con 256 simboli).
La codifica Unicode supera i limiti della codifica ASCII e relativi derivati, in
quanto estende il numero di simboli codificabili.
Originariamente si basava su una codifica a 16 bit che dava la possibilità di
codificare 216 cioè 65.536 caratteri e questo bastava per i caratteri impiegati
nelle principali lingue del mondo
Attualmente sono più di un milione di simboli codificati con lo standard
Unicode. Essi sono divisi in:
Script Moderni: Latino, Greco, Giapponese, Cinese, Koreano, etc.
Script Antichi: Sumero, Egiziano, etc.
Segni Speciali
La codifica Unicode è in ogni caso compatibile con la codifica ASCII.
La rappresentazione delle
informazioni ALFANUMERICHE
Codifica tabellare: ad ogni carattere (lettera,
cifra, segno speciale) corrisponde una particolare
sequenza di bit e viceversa.
Codice ASCII: è la codifica tabellare standard in ambiente P.C. È
un codice a 8 bit, cioè utilizza una sequenza di 8 bit (1 byte) per
rappresentare un carattere.
Caratteri (Simboli) rappresentabili: corrisponde al numero di
combinazioni (sequenze) di bit ottenibili. Per il codice ASCII
sono 28= 256, pari ai numeri binari ottenibili con 8 bit
(da 00000000 a 11111111).
bit, Byte, KiloByte, MegaByte, …
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
Glossario
1. Base di un s.d.n. = n° di cifre utilizzabili e valore
le cui potenze successive determinano il valore
posizionale della cifra
2. Cifra = simbolo grafico usato da solo o in
sequenza per la rappresentazione dei numeri
3. Sistema di Numerazione = insieme di regole e
simboli per la rappresentazione e l’uso dei numeri
4. Sistema di Numerazione Binario = S.d.n.
posizionale in base 2 ( cifre 0 1 )
Glossario
5. Sistema di Numerazione Decimale = S.d.n. posizionale in
base 10 ( cifre 0 1 2 3 4 5 6 7 8 9)
6. Sistema di Numerazione Esadecimale = S.d.n. posizionale
in base 16 ( cifre 0 1 2 3 4 5 6 7 8 9 A B C D E F )
7. Sistema di Numerazione Posizionale = S.d.n. in cui il
valore della cifra (peso) dipende dalla posizione occupata
nel numero
Fine
Codifica Numeri Interi Relativi
(con segno)
 I numeri interi relativi vengono rappresentati in modo
analogo a quanto fatto per i numeri interi positivi,
riservando un bit (MSB) per rappresentare il segno
(0 se positivo e 1 se negativo).
 Per la rappresentazione dei numeri negativi viene
utilizzato un tipo di codifica detto del complemento a due.
Codifica Numeri Interi Relativi
con Complemento a 2
Cosa è il complemento a 2 di un numero binario ?
 Dato un numero binario di N bit, il complemento a 2
di tale numero si ottiene tramite il seguente algoritmo:
 Si lasciano inalterati tutti i bit fino al primo 1
 tutti i bit successivi al primo 1, vengono invertiti (0
diviene 1, e viceversa)
Esempio: si determini il complemento a 2 del numero 01100.
 Tutti i bit 0 a partire dal bit meno significativo sono lasciati
inalterati e così anche il primo bit 1.
 Tutti gli altri bit vengono invertiti, ottenendo: 10100.
Codifica Numeri Interi Relativi
con Complemento a 2
Esempio: si voglia convertire il numero 105 con 8 bit
Essendo il numero positivo:
 Segno 0
 Codifica di 105 su 7 bits: 1101001
 Codifica: 01101001
Esempio: si voglia convertire il numero -105 con 8 bit
 Essendo il numero negativo, si considera il numero
binario corrispondente al valore assoluto (105) su 8
bit, ossia di 01101001 e poi si costruisce il
il complemento a 2 quindi -105  10010111
Scarica

Codifica dell`informazione