Prof. Pagani corrado LA CODIFICA DELLE INFORMAZIONI · moltiplicando ogni cifra del secondo fattore...
-
Upload
vuongthien -
Category
Documents
-
view
216 -
download
0
Transcript of Prof. Pagani corrado LA CODIFICA DELLE INFORMAZIONI · moltiplicando ogni cifra del secondo fattore...
DATI E INFORMAZIONI
Spesso i termini informazione e dato sono usati come sinonimi
L’informazione è ciò che si ottiene dall’elaborazione di uno o più̀ dati accresce il nostro stato di conoscenza rispetto a un fenomeno
La conoscenza infatti aumenta se riceviamo un dato e …
la relativa chiave di lettura (contestualizzazione)
non aumenta se manca uno di questi elementi !!
DATO
Un dato (dal latino datum, «fatto») è la rappresentazione di un fenomeno che siamo interessati a osservare
Un dato preso al di fuori del suo contesto non è interpretabile, manca il suo significato, quindi non accresce la conoscenza
ANALOGICO E DIGITALE
Misurazione digitale misurazione basata su
un insieme discreto (quindi finito) di valori
numerici
Il termine deriva dall'inglese digit, che significa cifra
Misurazione analogica misurazione basata
su un insieme continuo (quindi infinito) di valori
Il termine deriva dal fatto che si utilizza una
grandezza fisica analoga a quella che si vuole
misurare al fine di effettuare la misurazione stessa
ANALOGICO E DIGITALE: ESEMPI
Il termometro a mercurio rappresenta il valore della temperatura in base alla lunghezza (grandezza analoga) della colonnina di mercurio In teoria non ci sono limiti alla precisione
delle rappresentazioni analogiche
ad ogni minima variazione di temperatura si ottiene un’analoga variazione della dimensione della colonnina di mercurio.
Il termometro digitale rappresenta la temperatura in gradi e decimi visualizzandola sul display
Questo termometro non è in grado di misurare variazioni di temperatura inferiori al decimo di grado poiché la sua rappresentazione si basa su un insieme discreto composto da multipli dell’unità di base, nel nostro caso decimi di grado.
ANALOGICO E DIGITALE: ESEMPI
Il suono su disco in vinile è riprodotto analogicamente l'informazione sonora è letta per mezzo di una puntina che scorrendo sul solco inciso genera vibrazioni derivanti dall'irregolarità del solco i suoni riproducibili sono teoricamente infiniti
Su un compact disc il suono è memorizzato in formato digitale il suono è campionato, ad intervalli regolari, dal valore descritto da una sequenza di bit e dalla frequenza di campionamento e per ciascun canale stereo I bit sono incisi sul disco in un'unica traccia lunga oltre 5 km sotto forma di zone più o meno riflettenti la luce (rappresentanti gli stati 0 e 1).
ANALOGICO O DIGITALE ?
In prima analisi si potrebbe affermare che le rappresentazioni digitali risultano più approssimate di quelle analogiche, ma in realtà la situazione è opposta.
Perché? la “precisione” digitale (dimensione del digit) può essere modificata
aumentando sensibilmente la qualità della rappresentazione
C’è un problema legato alla effettiva valutazione di una rappresentazione analogica (se le differenze sono minime risultano impercettibili all’essre umano);
In realtà si va verso un “mondo digitale” e, come vedremo, le informazioni di qualunque tipo vengono con sempre maggiore frequenza rappresentate in modo digitale ed in particolare binario.
SISTEMI DI NUMERAZIONE
Sistema di numerazione l’insieme degli oggetti e delle
regole atte a rappresentare le grandezze numeriche
Sistemi Posizionali il valore delle cifra dipende dalla
posizione che occupa
Il sistema decimale è un sistema di numerazione
posizionale in base 10
Usa 10 simboli detti cifre
Spostare tutte le cifre vs destra (o sinistra) equivale a
dividere (o moltiplicare) per la base (in questo caso 10)
Esempio 72310 = 7*102+ 2*101+ 3*100
Posizione della cifra partendo a contare da 0 ed
ottenendo i valori positivi verso sinistra base
IL SISTEMA NUMERICO BINARIO
Il sistema numerico binario utilizza solo 2 cifre (1 e
0) per poter rappresentare un dato.
E’ un sistema posizionale
Esempio 10012 = 1*23+ 0*22+ 0*21+ 1*20=8+0+0+1
= 910
Questi valori, all'interno dell'architettura dei
calcolatori, sono abbinati a due tensioni differenti
denominate livello logico alto e livello logico basso
(o VERO e FALSO secondo la logica Booleana).
In pratica abbiamo fatto la conversione del
numero binario nel sistema decimale !!
CONVERSIONE BINARIO DECIMALE
Occorre moltiplicare ogni cifra per la base elevata alla sua posizione
Esempi:
10112 = 1*23+ 0*22 + 1*21 + 1*20 = 1*23+ 1*21
+ 1*20 = 8 + 2 + 1 = 1110
10111002 = 1*26+ 0*25 + 1*24 + 1*23 + 1*22 + 0*21 + 0*20 = 1*26+ 1*24 + 1*23 + 1*22 =
= 64 + 16 + 8 + 4 = 9210
Esercizi:
1100 1110011 10000
10101010 110011 10001
CONVERSIONE DECIMALE BINARIO
Occorre dividere (divisione intera) ripetutamente il numero per 2 fino a raggiungere il quoziente di zero; il numero convertito è dato dalla successione dei resti presi in ordine inverso
Esempi:
Esercizi: 5 34 92
128 144 200
Risultato:
100111
Risultato:
1001001
COSA CAMBIA PER I NUMERI REALI ?
Conversione binario decimale Si applica il procedimento standard ricordandosi di
numerare le posizioni decimali con esponente negativo
Conversione decimale binario Si converte la parte intera con il procedimento standard
Si converte la parte decimale moltiplicandola successivamente per 2, e prendendo ogni volta la parte intera del risultato come cifra binaria; si procede finché non si ottiene zero (risultato esatto) o si ottiene un numero sufficiente di cifre (risultato approssimato).
Esempio 9,38 Parte intera 910=10012
0.38*2= 0.76 prendo 0 0.76*2= 1.52 prendo 1
0.52*2=1.04 prendo 1 0.04*2=0.08 prendo 0
0.08*2=0.16 prendo 0 ….. Risultato 1001.0110 …
OPERAZIONI BINARIE
Somma Si procede come nel
caso decimale stando
attenti a usare i riporti
se il totale provvisorio
supera il valore di 1
Sottrazione Si procede come nel
caso decimale stando
attenti alla
gestione dei
prestiti
Prestito
di una cifra
da sinistra:
10 – 1 = 1
OPERAZIONI BINARIE
Moltiplicazione Si procede come nel sistema decimale
moltiplicando ogni cifra del secondo fattore
per tutte le cifre del primo.
Si procede poi operando la somma binaria.
Divisione Si procede come nel caso decimale abbassando
un numero di cifre del dividendo in grado di
contenere il divisore; si scrive la prima cifra
del quoziente, si effettua la moltiplicazione
della cifra del quoziente per il divisore, si
incolonna sotto le cifre del dividendo e si
effettua la sottrazione. Si procede finché
non si esauriscono le cifre del dividendo.
1010 *
101 =
------------
1010
0000--
1010—--
----------------
110010
11011 : 11
11 -----------
- - 0 1001
00
- -1
00
-11
11
- -
SISTEMA DI NUMERAZIONE ESADECIMALE
Il sistema numerico esadecimale (abbreviato come esa o hex) è un sistema numerico posizionale in base 16.
Usa i simboli da 0 a 9 per le prime dieci cifre, e poi le lettere da A a F per le successive sei cifre, per un totale di 16 simboli.
0 1 2 3 4 5 6 7 8 9 A B C D E F
Esiste una analogia tra il sistema binario e esadecimale (e anche ottale) perché sono entrambi sulle potenze del 2 Ogni cifra nel sistema esadecimale corrisponde
univocamente a 4 cifre consecutive nel sistema binario (e viceversa)
CONVERSIONE BINARIO – ESADECIMALE
Esadecimale Binario:
F416 111101002
A5B16 1010010110112
Binario Esadecimale :
1100102 posso aggiungere zeri a
sinistra 00110010 3216
10111002 5C16
CONVERSIONE ESADECIMALE – DECIMALE
Si procede in modo analogo rispetto alla conversione da binario a decimale
12B16= 1 * 162 + 2 * 161 + 11 * 160 =
= 256 + 32 + 11 = 29910
FA016= 15 * 162 + 10 * 161 + 0 * 160 =
= 3840 + 160 + 0 = 400010
Esercizi: D3A 1A00
FF E001
CONVERSIONE DECIMALE – ESADECIMALE
Si procede in modo analogo rispetto alla conversione da decimale a binario, dividendo questa volta per 16
7810 78 : 16 = 4 resto 14 (E)
4 : 16 = 0 resto 4
risultato 4E16
72410 724 : 16 = 45 resto 4
45 : 16 = 2 resto 13 (D)
2 : 16 = 0 resto 2
risultato 2D416
MEMORIZZAZIONE DEI DATI SU COMPUTER
I computer hanno una memoria finita l’insieme dei dati che si possono rappresentare è finito
Abbiamo già visto che tutti i dati usati dai computer sono in forma codificata basata sul sistema binario (cifre 0 e 1)
Poiché in un bit è possibile rappresentare 2 soli simboli, per poter rappresentare un numero maggiore di informazioni si ricorre a sequenze di bit
Il processo attraverso cui si fa corrispondere ad una informazione una configurazione di bit prende il nome di codifica dell’informazione
MEMORIZZAZIONE DEI DATI SU COMPUTER
Con il termine byte si intende la sequenza ordinata di 8 bit, che può assumere 256 (28) configurazioni di bit diverse
Esempio 10011100
Ogni tipologia di dato segue regole specifiche per la propria memorizzazione in base al formato scelto per rappresentare il dato stesso
Il problema della codifica solitamente trae spunto dalla domanda: quanti bit (o byte) mi occorrono per rappresentare il mio dato ? Ad esempio quanti byte uso per rappresentare un numero intero?
RAPPRESENTAZIONE DEI NUMERI INTERI
Solitamente un numero intero occupa 2 byte (16 bit)
In 2 byte è possibile rappresentare 216 combinazioni diverse. Ma poiché un bit è usato per il segno e volendo rappresentare anche lo zero, il massimo intero rappresnetabile risulta 215 – 1 = 32767 (mentre il minimo è - 32768)
Se si vuole allargare l’intervallo dei numeri rappresentabili è possibile utilizzare 4 byte (tipo long int)
Nel caso si voglia rappresentare un numero più grande o più piccolo di tali limiti si incorre in un errore di overflow
NUMERI INTERI NEGATIVI
Vedremo due tipi di codifica per i numeri interi
negativi
Bit e segno
Complemento a due
BIT e SEGNO
Riserviamo il primo bit per il segno:
0 = positivo
1 = negativo
Le operazioni di somma e differenza devono essere
implementate in modo differente sul processore!
COMPLEMENTO A DUE
Come prima, il bit più significativo settato a 1 rappresenta un valore negativo
Il complemento a 2 di un numero di n bit si ottiene eseguendo la sottrazione tra 2n e il nostro numero composto da i n bit rimanenti
Il metodo empirico più facile per svolgere la sottrazione è invertire tutti i bit (da 1 a 0 e viceversa) e sommare 1
Esempio: Numero da complementare: 1011001
10000000 – 1011001 0100110 01001101
Inverto le cifre Sommo 1
COMPLEMENTO A DUE – VANTAGGI
Attraverso la rappresentazione dei numeri negativi in complemento a 2 e trascurando opportunamente i riporti fuori dal nostro intervallo di bit è possibile ricondurre l’operazione di sottrazione ad un somma
E’ più facile riconoscere l’overflow una somma di due numeri di n cifre in complemento a 2 dà (errore di) overflow se e solo se i riporti in colonna n e n +1 sono diversi
COMPLEMENTO A DUE – ESEMPIO
Eseguire la sottrazione tra i numeri 13 e 6 in
binario
Eseguo la differenza tra
13 e 6
00001101 –
00000110 =
00000111
Eseguo la somma tra 13 e
6 (in complemento a 2)
Complemento a 2 di 110
11111010
Eseguo la somma
00001101 +
11111010 =
00000111
Esercitazione: Svolgere
almeno 3 sottrazioni con
entrambi i metodi
COMPLEMENTO A DUE – OVERFLOW Overflow se i riporti in colonna n e n +1 sono diversi
Con 8 bit posso rappresentare i numeri tra -128 e 127
Non è possibile andare in overflow facendo la somma di un numero positivo ed uno negativo (che non siano già in overflow)
Somma di numeri positivi
01001101 + 77 +
01000110 = 70 =
010010011 147
Owerflow perdo il bit del
segno, infatti:
il Riporto in 7a colonna = 1
Riporto in 8a colonna = 0
Somma di numeri negativi
10001101 + -115 +
10100110 = - 90=
100110011 -205
Owerflow perdo il bit del
segno, infatti:
Riporto in 7a colonna = 0
Riporto in 8a colonna = 1
COMPLEMENTO A DUE TRASFORMAZIONI
Vediamo in dettaglio le trasformazioni dell’esercizio della slide precedente:
11510 011100112 inverto le cifre 10001100 sommo 1 ottengo il complemento a 2 10001101
9010 010110102 inverto le cifre 10100101 sommo 1 ottengo il complemento a 2 10100110
100110011 inverto le cifre 011001100 per determinare il corrispondente numero positivo sommo 1 ottengo il complemento a 2 011001101 20510
NUMERI REALI
I numeri reali possono essere rappresentati con 2 modalità: Virgola fissa (fixed point)
Virgola mobile (floating point)
Virgola fissa Utilizzando N cifre si assume che la posizione della
virgola sia fissa in un preciso punto della sequenza. Quindi si assegnano k cifre per la parte intera e N-k cifre per la parte inferiore all’unità. Potrebbe essere necessario troncare la precisione della parte
inferiore all’unità (anche in presenza di molti 0)
Si può facilmente andare incontro ad errori di overflow
Esempio con un byte (8 bit) a disposizione (k = 5) 111.1 00111.100
NOTAZIONE ESPONENZIALE
Per ovviare a questi problemi si ricorre alla rappresentazione con virgola mobile normalizzata che si rifà alla notazione esponenziale
Notazione esponenziale (o scientifica) è una riscrittura compatta del numero come prodotto tra un opportuno numero decimale tra 1 (incluso) e 10 (escluso) e una potenza di 10 con esponente intero.
La virgola è sempre a destra della prima cifra non negativa
Esempi
2345.67 2.34567 * 103
0.0001234 1.234 * 10-4
Una notazione analoga è possibile anche nel sistema binario.
FLOATING POINT
Sfruttando la notazione esponenziale, per memorizzare un numero reale, ci occorrono 3 dati:
Il segno 1 bit
La sequenza di cifre che compongono il numero denominata mantissa
NON ci serve la posizione della virgola che sarà sempre a destra della prima cifra non negativa
NEL CASO BINARIO NON ci serve la prima cifra del numero che sarà sempre 1
Il valore dell’esponente da dare alla base 2
Per memorizzare queste informazioni utilizziamo 32 bit (4 byte) così divisi
1 bit (Segno) + 23 bit (mantissa) + 8 bit (esponente)
FLOATING POINT
Si noti che i valori dell’esponente variano da 0 a 255, ma a noi interessano anche i valori negativi per definire numeri più piccoli di 1 ! Per risolvere sottraiamo 127 al valore dell’esponente memorizzato i nuovi valori varieranno da -126 a 127 I due valori estremi sono utilizzati per i casi speciali 0 e ±∞
(-1)s * 1.m * 2e
s segno m mantissa e esponente
Il valore più piccolo in valore assoluto rappresentabile è
1*2-126 ≈ 1,175 * 10-38
Configurazione 0 00000001 00000000000000000000000
s e m
Il valore più grande in valore assoluto rappresentabile è 1.11…*2127 ≈ 1,90 * 1038
Configurazione 0 11111110 11111111111111111111111
s e m
DOUBLE PRECISION
Il formato in virgola mobile estende considerevolmente il campo numerico rappresentato, ma non evita del tutto il problema dell’overflow
Si presenta anche il nuovo problema dell’underflow, ossia l’impossibilità di rappresentare numeri più piccoli di un certo valore assoluto
E’ possibile utilizzare un formato con doppia precisione double
FLOATING POINT - ESERCIZI
Determinare i valori nel sistema decimale delle seguenti rappresentazioni in floating point: s = 1 e = 10000111 m = 11011000000000000000000
s = 0 e = 11100101 m = 10110010100000000000000
s = 1 e = 00000101 m = 11011000000000000000000
Rappresentare i seguenti numeri decimali in virgola mobile in singola precisione
−23.37510
−127.2510
+131.510
FLOATING POINT ESERCIZI SVOLTI
s = 1 e = 10000111 m = 11011000000000000000000
Trasformo in decimale
e = 1+2+4+128 = 135 135 – 127 = 8
m = 0,5 + 0,25 + 0,0625 + 0,03125 = 0,84375 1,84375
Eseguo la formula
-1 * 1,84375 * 28 = – 472
−23.37510
s = 1
Converto in binario
23.3751 10111,011 notazione esp 1,0111011 con esponente 4 esponente da memorizzare 4 +127 = 131
e = 10000011
m = 0111011
CARATTERI ALFANUMERICI
Il termine "alfanumerico" è l'abbreviazione di alfabetico e numerico e sta ad indicare l'insieme delle lettere dell'alfabeto latino e dei numeri arabi, nonché degli altri simboli comuni utilizzabili per la scrittura (punteggiatura …).
In generale viene usata la codifica standard ASCII (American Standard Code Information Interchange): ogni carattere è rappresentato in 1 byte e quindi possiamo rappresentare 256 caratteri diversi.
CODIFICA ASCII
Come si può osservare lo standard ASCII copre
solo il primi 128 caratteri (primo bit = 0)
I successivi 128 costituisco la tabella ASCII estesa
che presenta varie versioni a carattere nazionale
Disponendo di un solo byte può essere
problematico rappresentare tutte le varianti
disponibili
UNICODE
Unicode è un sistema di codifica che assegna un numero univoco ad ogni carattere usato per la scrittura di testi, in maniera indipendente dalla lingua, dalla piattaforma informatica e dal programma utilizzato.
È stato compilato e viene aggiornato e pubblicizzato dall'Unicode Consortium.
Utilizza 2 byte, quindi 216 = 65536 combinazioni possibili