FONDAMENTI DI INFORMATICA parte INFORMAZIONE e CODICI

Slides:



Advertisements
Presentazioni simili
Dall’informazione al linguaggio macchina
Advertisements

Numeri a 100 Electronic flashcard. 1 uno ritorno.
Rappresentazioni numeriche
Dipartimento di Ingegneria Idraulica e Ambientale - Universita di Pavia 1 Caduta non guidata di un corpo rettangolare in un serbatoio Velocità e rotazione.
Informatica Generale Susanna Pelagatti
1 MeDeC - Centro Demoscopico Metropolitano Provincia di Bologna - per Valutazione su alcuni servizi erogati nel.
Fondamenti di Informatica
Rappresentazioni numeriche
Le Informazioni e la loro Rappresentazione nei calcolatori
Trasmissione delle informazioni
Codifica dei Dati Idea: vogliamo rappresentare dati eterogenei utilizzando un linguaggio che l’elaboratore puo’ facilmente manipolare Essenzialmente vogliamo.
Lez. 3 - Gli Indici di VARIABILITA’
Sistemi e Tecnologie della Comunicazione
Virtual CPU - Eniac Dr.ssa Veronica Marchetti
Varianza campionaria Errore standard della varianza campionaria
Campionamento casuale semplice
27+ 12= Risultato troppo grande = = 39 = -25 errore di overflow in binario =
Università degli Studi di Bergamo Facoltà di Lingue e Letterature Straniere Facoltà di Lettere e Filosofia A.A Informatica generale 1 Appunti.
Informatica 3 Codifica binaria.
A.S.E.6.1 ARCHITETTURA DEI SISTEMI ELETTRONICI LEZIONE N° 6 Complemento a MComplemento a M Rappresentazione di numeri con segnoRappresentazione di numeri.
A.S.E.5.1 ARCHITETTURA DEI SISTEMI ELETTRONICI LEZIONE N° 5 Rappresentazione di numeri con segnoRappresentazione di numeri con segno –Modulo e segno (MS)
Sistemi di Numerazione
Canale A. Prof.Ciapetti AA2003/04
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Rappresentazione dellinformazione su calcolatore Anno Accademico 2009/2010.
Corso di Informatica (Programmazione)
Settembre 2002IFTS2002 Acq. Dati Remoti: INFORMATICA 1 Rappresentazione dellinformazione (1)
Algoritmi e strutture dati
Corso di Informatica per Giurisprudenza
Rappresentazione dei dati
Test di ipotesi X variabile casuale con funzione di densità (probabilità) f(x; q) q Q parametro incognito. Test Statistico: regola che sulla base di un.
I CODICI.
Codici binari decimali
1 Sistemi Digitali. 2 Definizione Analog Waveform Time Voltage (V) 0 5 Digital Waveform Time Voltage (V)
MP/RU 1 Dicembre 2011 ALLEGATO TECNICO Evoluzioni organizzative: organico a tendere - ricollocazioni - Orari TSC.
La rappresentazione dellinformazione. 7-2 Digitalizzare linformazione Digitalizzare: rappresentare linformazione per mezzo di cifre (ad es: da 0 a 9)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%% % Accrescimento della PECORA IN TASMANIA % % dal 1820 ad oggi % % ( MODELLO LOGISTICO ) % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Cos’è un problema?.
CALCIO SKY 2007 – 2008 PROFILO DI ASCOLTO. 2 INDICE DEGLI ARGOMENTI Profilo di ascolto CALCIO SERIE A 2007 – 2008 Totale campionato (tutte le partite)……………………………………………….
Gli italiani e il marketing di relazione: promozioni, direct marketing, digital marketing UNA RICERCA QUANTITATIVA SVOLTA DA ASTRA RICERCHE PER ASSOCOMUNICAZIONE.
Sistema di comunicazione
Gli esseri viventi ricevono informazione direttamente dal mondo circostante e dai propri simili attraverso i sensi (percezione). La percezione, tuttavia,
Codifica binaria Rappresentazione di numeri
Conversione binario - ottale/esadecimale
Conversione binario - ottale/esadecimale
Limiti al trasferimento di informazione u Il tempo necessario per trasmettere dellinformazione dipende da: –la velocita di segnalazione (cioe quanto velocemente.
Rappresentazione dell’informazione
Corso di Laurea in Biotecnologie corso di Informatica Paolo Mereghetti DISCo – Dipartimento di Informatica, Sistemistica e Comunicazione.
Programma del corso Introduzione agli algoritmi Rappresentazione delle Informazioni Architettura del calcolatore Reti di Calcolatori (Reti Locali, Internet)
CHARGE PUMP Principio di Funzionamento
Educare al multimediale 1 – Verso il digitale 2 Presentazione a cura di Gino Roncaglia Prima parte: Informazione in formato digitale.
RAPPRESENTAZIONE DELL'INFORMAZIONE
Q UESTIONI ETICHE E BIOETICHE DELLA DIFESA DELLA VITA NELL AGIRE SANITARIO 1 Casa di Cura Villa San Giuseppe Ascoli Piceno 12 e 13 dicembre 2011.
ORDINE DI CHIAMATA a 1minuto e 2 minuti PRINCIPALI TEMPI DELLA COMPETIZIONE ORDINE DI CHIAMATA a 1minuto e 2 minuti PRINCIPALI TEMPI DELLA COMPETIZIONE.
Reti di CalcolatoriAndrea Frosini1 Reti di Calcolatori a.a. 2005/06 Lezione 7.
ISTITUTO COMPRENSIVO “G. BATTAGLINI” MARTINA FRANCA (TA)
GEOGRAFIA DEI NUMERI Accademia dei Lincei - Roma 18 Ottobre2011
Un trucchetto di Moltiplicazione per il calcolo mentale
Che cos’è un sistema di numerazione?
CONCETTI DI BASE 1.0 FONDAMENTI 1.1 HARDWARE 1.2 SOFTWARE 1.3 RETI
Esempi risolti mediante immagini (e con excel)
1 Sky 2 Sky 3 Sky L’Universo Aperto La teoria del Big Bang prevede che, se la densità globale dell’universo non raggiunge un valore di Ωo (Omega Zero)
Linguaggi e Programmazione per l’Informatica Musicale
I computer vengono utilizzati per automatizzare la soluzione di problemi di varia natura trattando le informazioni in entrata (DATI) eseguendo gli opportuni.
La rappresentazione delle informazioni in un computer
A.P. cat. B - 1 Per chi vuole: Libro di testo D.P. Curtis, K. Foley, K. Sen, C. Morin Informatica di base 2° edizione Mc Graw-Hill Companies.
Customer satisfaction anno 2013 Ospedale di Circolo Fondazione Macchi Varese Presentazione risultati (Febbraio 2014)
DIRETTIVI UNITARI SPI-CGI – FNP-CISL - UILP-UIL TERRITORIO LODIGIANO Lunedì 23 marzo 2015 dalle ore 9,00 alle ore 13,00 Presso la sala Conferenze Confartigianato.
Rappresentazione dell’Informazione
Corso di Laurea in Scienze e Tecnologie Chimiche corso di Informatica Generale Paolo Mereghetti DISCo – Dipartimento di Informatica, Sistemistica e Comunicazione.
Transcript della presentazione:

FONDAMENTI DI INFORMATICA parte INFORMAZIONE e CODICI di Matjaz Hmeljak parte INFORMAZIONE e CODICI

I N F O R M A Z I O N E - cenni contenuto per la parte informazione: * DEFINIZIONE * MESSAGGI, DATI * INFORMAZIONE E PROBABILITA' * QUANTITA' * ESEMPI * DATI COMPOSTI * SIMBOLI NON EQUIPROBABILI * INFORMAZIONE MEDIA * SIMBOLI DIPENDENTI * INFORM. MEDIA DI UNA LETTERA DI UN TESTO

contenuto per la parte codici: contenuto della parte codici: codici, rappresentazione, dati codifiche binarie codice ASCII codice UNICODE codici a controllo di errore codici a correzione di errore bibliografia esercizi

segue la parte relativa al concetto di informazione, e parte informazione segue la parte relativa al concetto di informazione, e alla misura dell’informazione

definizione dell' informazione ? informazione e codici definizione dell' informazione ?

? canale di trasmissione -> sistema ricevente sistema I N F O R M A Z I O N E - cenni ? canale di trasmissione hai vinto 1 miliardo alla lotteria di carnevale di Canicattini Bagni. messaggio: contiene informazione -> sistema ricevente sistema sorgente ->

I N F O R M A Z I O N E - definizione “sistema di trasmissione” : due persone A e B, la persona A (sorgente di informazione) dice alla persona B (ricevente di informazione) : hai vinto 1 miliardo alla lotteria di carnevale di Canicattini (dato = informazione codificata ) A ------------------------------------> B sistema canale di trasmiss. sistema sorgente informazione ricevente (messaggio M)

I N F O R M A Z I O N E - definizione Con una dizione un po' approssimata diremo che : l'informazione e' il contenuto del messaggio M trasmesso da un sistema sorgente A al sistema ricevente B, "contenuto" nel senso: l’informazione contenuta nel messaggio M e' capace di modificare lo stato di B !! ... un messaggio o un dato che non modifica lo stato del sistema ricevente contiene zero informazione ...

I N F O R M A Z I O N E - messaggio / dato esempio: abbiamo trovato un nuovo modo di far soldi con un’ attivita’ in internet e lo scriviamo sull’ ultima pagina della nostra rubrica telefonica: A ------------------> B sistema dispositivo di = supporto sorgente registrazione di memoria informazione --> dato in un secondo tempo, eventualmente, avremo... C <----------------------- B sistema rice- dispositivo di = supporto vente lettura di memoria <-- dato

I N F O R M A Z I O N E - messaggio / dato notare: la stessa comunicazione verbale implica l’uso di simboli per rappresentare oggetti (o altro): la “parola” “gatto” e’ un simbolo che rappresenta un gatto reale, la sequenza di suoni g-a-t-t-o non ha alcun collegamento con l’oggetto rappresentato (idem per cat, neko, mačka, kot, ecc) la scrittura (circa 6000 anni fa) e’ un sistema di rappresentazione di informazioni (codifica) A ------------------> B SCRIBA stilo TAVOLETTA in un secondo tempo (2 o 6000 anni dopo): C <----------------------- B LETTORE TAVOLETTA

I N F O R M A Z I O N E - messaggio / dato L' informazione puo' essere trasmessa ( messaggio tra due sistemi [ A ==> B ] ) o registrata (dato =info codificata su un supporto di memoria per essere in seguito riutilizzata) utilizzando un codice di rappresentazione (vedremo) A ------------------> B abiesabies dispositivo 37A4F = 0011 0111 1010 0100 1111 (trasmette dato bla-bla e codifica) codificato

dell' informazione interessa: * quantita' (unita' di misura) I N F O R M A Z I O N E - cenni dell' informazione interessa: * quantita' (unita' di misura) * rappresentazione (codici) * contenuto (significato, interpretazione)

* quantita' (unita' di misura) come si misura l’informazione ? I N F O R M A Z I O N E - cenni * quantita' (unita' di misura) come si misura l’informazione ? (2 pinte di informazione? - 2 claftre di informazione?) vedremo tra breve * rappresentazione (codici) ( come si scrive "bisturi" in cinese? ... oppure come si scrive “tassa di importazione” in wolof? o “fondamenti di informatica” in guarani’ ? o "domani" in azero? )

* contenuto (significato, interpretazione) I N F O R M A Z I O N E - cenni * contenuto (significato, interpretazione) lo studio del contenuto o del significato, interpretazione (analisi pragmatica) di un messaggio non puo' prescindere dal contesto: 1) es.: < l’inquinamento del mare sta aumentando > 2) es.: < mi devi 10 euro > 3) es.: < 1997 x 1997 = 3988009 > 4) es.: < #include <conio.h> void main() { cputs(“ciao”); } 5) es.: < la devolution, l'involution, il furbolution e la pollution sono in fase di deflation... >

* contenuto (significato, interpretazione) I N F O R M A Z I O N E - cenni * contenuto (significato, interpretazione) 6) es.: < “ il recente lavoro di Zaffira Caterazzu abbraccia il ritmo esistenziale, dilatandosi nella simbologia dalle pre- cedenti porte che adombravano la necessita'dell'apertura e dell'incontro oltre le differenze, e comprende questa signi- ficanza oltre i lacerti degli elementi visivi e formali nel non effimero prototipo del nulla, che pochi comprendono” > => il contenuto del messaggio in generale implica due contesti, del sistema sorgente e del sistema ricevente il messaggio qui sopra (peraltro parte di un testo "reale" di un critico d'arte) richiede un ambiente di nozioni del ricevente che forse la maggior parte di noi non ha ... ;-) lo studio del significato e l' interpretazione (analisi pragmatica) di un messaggio sara’ oggetto del nostro corso solo per programmi C++ ...

vediamo ora meglio questi attributi dell'informazione: I N F O R M A Z I O N E - cenni vediamo ora meglio questi attributi dell'informazione: quantita' (unita' di misura) rappresentazione (codici) * contenuto (significato, interpretazione)  cominciamo con la quantita' .... questa e' legata alla probabilita'

I N F O R M A Z I O N E - quantita’ La quantita' di informazione associata ad un messaggio o ad un dato dipende dall' incertezza del messaggio ovvero dalla probabilita' di avere proprio quel messaggio tra tutti i messaggi possibili Ad es. il messaggio "non hai vinto alla lotteria" ha un contenuto di informazione cioe’ l’effetto sullo stato del ricevente e’ ben diverso dal messaggio: "hai vinto 1 miliardo alla lotteria"

I N F O R M A Z I O N E - probabilita’ di un dato Esempi ... [quantita’ info del messaggio <--> probabilita’ del mess.] vincita in lotteria rionale, con 200 numeri, un premio: - probabilita' di vincita 1/200 vincita su lancio di moneta a testa/croce: - probabilita' di vincita di 1/2 vincita al concorso per un posto di ricercatore presso l' Universita' di Raute con unico candidato (raccomandato): - probabilita' di vincita 1/1 (certezza) laurea in ingegneria gastronomica con 110 in 2 anni - probabilita’ di riuscita 0 ( ..... impossibile ... non c’e’ )

I N F O R M A Z I O N E - I = f(probabilita’) la quantita’ di informazione e’ legata all’ incertezza con cui si aspetta il messaggio (o il dato), quindi alla probabilita’ di quel dato (o messaggio) : un dato relativo ad un evento poco probabile contiene una grande quantita' di informazione; e piu' conosco il contenuto del messaggio, cioe' maggiore e' la probabilita' del messaggio -> piu' piccola e' la quantita' di informazione contenuta; fino al dato relativo ad un evento certo, che ha probabilita' uno e a cui si associa un quantita' di informazione zero.

I p la quantita’ di informazione decresce I N F O R M A Z I O N E ... I = f(p) la quantita’ di informazione decresce al crescere della probabilita’ del dato: I p p grande I piccola p piccola I grande diagram-ma a fianco, in prima approssi- mazione: Ma il legame tra probabilita' e informazione non e' lineare; inoltre- si tenga presente che la probabilita'viene misurata in valori da 0 (evento impossibile) a 1 (evento certo)

I N F O R M A Z I O N E - I = f(probabilita’) il legame tra la probabilita’ e la quantita’ di informazione e’ di tipo logaritmico; se dimezza la probabilita’ -> l’ informazione aumenta di uno Informazione probabilita' piccola- informazione grande 3 Probabilita' grande, P =1 significa Info=0 Informazione piccola, 2 1 1/8 1/4 1/2 1 probabilita' Ad un evento certo si associa un'informazione nulla, ad un evento poco probabile si associa un'informazione grande.

funzione logaritmo: log2(n) = x inversa di n = 2x ...alcuni valori: la funzione logaritmo funzione logaritmo: log2(n) = x inversa di n = 2x ...alcuni valori: log2(0,0625)=-4 0,0625= 2-4 log2(0,125)=-3 0,125= 2-3 log2(0,25)=-2 0,25= 2-2 log2(0,5)=-1 0,5= 2-1 log2(1)=0 1 = 20 log2(2)=1 2 = 21 log2(4)=2 4 = 22 log2(8)=3 8 = 23 log2(10)=3,3 10= 23,3 log2(16)=4 16= 24 log2(1024)=10 1024= 210 log2(1048576)=20 1048576=220 log2(x) 0,5 1 x -1 - -2 -

I N F O R M A Z I O N E - I = log2(1/probab) il legame [ probabilita’ - quantita’ di informazione ] e’ di tipo logaritmico: I = log2(1/p) = -log2(p) Per un dato relativo ad un evento su N eventi possibili ed equiprobabili: la probabilita’ del dato e’ p = 1/N e quindi I= log( 1/(1/N) )= log( N ) Info Prob

I N F O R M A Z I O N E - unita’ di ... si definisce quantita’ di informazione unitaria di 1 bit l'informazione contenuta in un messaggio o in un dato di probabilita' 1/2 Es.: lancio di una moneta non truccata a testa o cifra questo messaggio (relativo al risultato) ha un contenuto di un bit di informazione : I = log2( 1/probab ) = log2( 1/ ( 1/2 ) ) = log2 ( 2 ) = 1

Relazione tra informazione e probabilita' : I N F O R M A Z I O N E - 5 esempi Relazione tra informazione e probabilita' : I = log( 1/p ) = -log( p ) = log ( N ) 2 2 2 esempi: * informazione relativa ad un dato su sedici: 4 bit * informazione relativa ad evento certo (p=1): 0 bit * quantita' di inform. di un dato composto da un simbolo dell' insieme delle 25 lettere dell' alfabeto inglese : I = log2 (25) = 4,6 bit

I = log2(1/p) = -log2(p) = log2(N) I N F O R M A Z I O N E - 5 esempi altri esempi per il legame quantita’ di informazione - probabilita’: I = log2(1/p) = -log2(p) = log2(N) quantita' di informazione di un dato composto da un simbolo scelto tra 25 - qui, da una lettera dell' insieme delle 25 lettere dell' alfabeto inglese: I = log2 (25) = 4,6 bit

I = log2(1/p) = -log2(p) = log2(N) I N F O R M A Z I O N E - 5 esempi altri esempi per il legame quantita’ di informazione - probabilita’: I = log2(1/p) = -log2(p) = log2(N) informazione di una cifra decimale I = log2(10) = 3,3 bit ( 2 alla 3 = 8, 2 alla 3,3 = 10 )

I = log2(1/p) = -log2(p) = log2(N) I N F O R M A Z I O N E - 5 esempi altri esempi per il legame quantita’ di informazione - probabilita’: I = log2(1/p) = -log2(p) = log2(N) * quantita' di inform. di una lettera dell' insieme delle 25 lettere dell' alfabeto inglese: I = log2 (25) = 4,6 bit * inf. di una cifra decimale I = log2(10) = 3,3 bit * informazione di una cifra ottale (otto simboli da 0 a 7) I = log2( 8 ) = 3 bit

I N F O R M A Z I O N E - cont. 5 esempi ancora un esempio per il legame quantita’ di informazione - probabilita’: I = log2(1/p) = -log2(p) = log2(N) abbiamo visto che: * info. relativa ad un dato su sedici: 4 bit * info. di una lettera inglese: I = log2 (25) = 4,6 bit * info. di una cifra decimale: I = log2(10) = 3,3 bit * info. di una cifra ottale: I = log2( 8 ) = 3 bit quantita’ di informazione di una cifra binaria: probabilita’ di scelta tra "0" e "1" : p = 1/2, quantita'di inform(cifra bin) = I = log2(2) = 1 bit

Informazione - dato semplice esercizi: quanta informazione ha il simbolo + scelto tra i dieci simboli + - * / . , ! ? ; : quanta informazione ha il dato vocale E scelto tra i cinque simboli A E I O U quanta informazione ha una cifra esadecimale E scelta tra i 16 simboli 0 1 2 3 4 5 6 7 8 9 A B C D E F quanta informazione ha il dato P scelto tra i 32 simboli dell’alfabeto russo (soluzione segue)

Informazione - dato semplice soluzioni: quanta informazione ha il dato + (scelto tra i dieci simboli + - * / . , ; : ! ? ) n=10 log2(1/p) = log2(n) = log2(10 ) = 3,3 bit quanta informazione ha il dato E (scelto tra i cinque simboli A E I O U ) n=5 log2(1/p) = log2(n) = log2(5 ) = 2,3 bit

Informazione - dato semplice soluzioni: quanta informazione ha il dato E scelto tra i 16 simboli 0 1 2 3 4 5 6 7 8 9 A B C D E F n=16 log2(1/p) = log2(n) = log2(16 ) = 4 bit quanta informazione ha il dato P scelto tra i 32 simboli dell’alfabeto russo n=32 log2(1/p) = log2(n) = log2( 32 ) = 5 bit

I N F O R M A Z I O N E - dati composti quantita' di informazione contenuta in un dato composto: quanta informazione contiene il dato seguente: "operator overloading can be dangerous"

I N F O R M A Z I O N E - dati composti dato composto: quanta informazione hanno i tre dati seguenti (tutti di 8 simboli) : “7 A 4 5 F F 0 0” “ B F U W R Q E A” “P a p e r i n a” i 3 dati contengono la stessa quantita’di informazione? L’ultimo simbolo 0 nel primo dato e l'ultimo simbolo A nel secondo dato hanno una probabilita’ diversa dall’ultimo simbolo a nel terzo dato? Nei tre dati (composti da piu’ simboli) i singoli simboli sono indipendenti tra loro?

I N F O R M A Z I O N E - dati composti Per calcolare quanta informazione ha un dato composto da piu’ simboli, come i tre dati visti: 1) “ 7 A 4 5 F F 0 0 ” 2) “ B F U W R Q E A ” 3) “ P a p e r i n o ” distingueremo il caso di dato composto con i singoli simboli indipendenti tra loro (dati 1 e 2) dal caso di dato composto da simboli legati tra loro, cioe’ dipendenti uno dall’altro (dato 3)

I N F O R M A Z I O N E - dati composti 1) dati composti da piu' simboli indipendenti tra loro (indipendenti la presenza dei primi k-1 simboli non cambia la probabilita' del k-esimo simbolo) probabilita' che si verifichi l’evento composto “ a , b” , con a e b indipendenti vale: p( a,b) = p(a) * p(b) da cui l’ informazione contenuta in un dato composto “a,b” e' data dalla somma delle singole informazioni : I(a,b) = log2( 1/ p(a,b) ) = log2( 1/( p(a) * p(b) ) ) = log2( 1/p(a) ) + log2( 1/p(b) ) -> I(a,b) = I(a)+I(b) (a,b simboli indipend.)

I N F O R M A Z I O N E - dati composti Informazione contenuta nella parola di n lettere: "ZHWITQ" se le lettere sono indipendenti tra loro, e’ la somma delle informazioni dei n singoli simboli se le lettere sono equiprobabili allora l’informazione per simbolo e’ costante e allora: I(lettera)= 4,6 bit = log2(25) (alfab.di 25 lettere), quindi 6 * 4,6 bit = 27,6 bit (scelta di un dato tra 2^28 = 256 milioni di dati possibili)

I N F O R M A Z I O N E - dati composti L'informazione contenuta nel dato (numero decimale): "1863" (una cifra decimale ha un contenuto di informazione log2(10) = 3,3 bit ) per un dato di 4 cifre l’informazione e' di 4 * 3,3 bit = 13,2 bit ovvero scelta di un dato tra 10000 possibili (appunto 1863 scelto tra i dati 0000 ... 9999)

I N F O R M A Z I O N E - dati composti esercizio: quanta informazione hanno i dati: 5883460 (num.telefonico di 7 cifre) さ よ な ら (sayonara(*)) (parola giapponese di 4 sillabe, - vi sono 45 sillabe in giapponese) corrompevole (parola di 12 lettere) 4 x 4 = 16 (un elemento della tavola Pitagorica) segue soluzione (*) in scrittura semplificata (hiragana) ;-)

I N F O R M A Z I O N E - dati composti - soluzione : 6763411 (num.telefonico di 7 cifre) dato x x x x x x x (x sta per una cifra) con I(x) = log2(10) = 3,3 -> I(dato)= 7*3,3= 23.1 bit さ よ な ら (sayonara) (parola giapponese di 4 sillabe, - vi sono 45 sillabe in giapponese) dato x x x x (x sta per una sillaba) con I(x) = log2(45) = 5,5 -> I(dato) = 4*5,5 = 22 bit corr ompe vole (parola di 12 lettere, vi sono 21 lettere) dato xxxx xxxx xxxx con I(x) = 4,4 bit -> I(dato) = 12 * 4,4 = 53 bit 4 x 4 = 16 (elemento della tavola delle moltiplicazioni) dato x * x = zz (con x cifra da 1 a 9, il resto e’ determinato) con I(x) = 3,3 -> I(dato) = 2*3,3 = 6,6 bit

I N F O R M A Z I O N E - dati composti Ripetiamo: l’ informazione contenuta in un dato composto da n simboli indipendenti tra loro (cioe’ dove il verificarsi di k simboli (k<n) non influisce sulla probabilita’ dell’ ennesimo simbolo) e’ la somma delle informazioni dei singoli simboli, se poi anche i singoli simboli sono equiprobabili (allora l’informazione per simbolo e’ costante) l’informazione di un dato di n simboli indipendenti ed equiprobabili = n * info(simbolo) MA: il calcolo dell’informazione contenuta in un dato composto cambia ... se: se i simboli non sono indipendenti tra loro e/o se non sono equiprobabili

I N F O R M A Z I O N E - dati composti Dato di n simboli non equiprobabili, e/o non indipendenti tra loro - un esempio per capire meglio: calcolo della quantita' di informazione contenuta nella parola "CAROTA" 1) se considero le lettere indipendenti tra loro: 6 * 4,6 bit = 27,6 bit (scelta di uno tra 2^28 = 256 milioni di dati possibili piu’ precisamente, 25 ^ 6 = 244.140.625 : ovvero scelta di un dato tra i 244M di dati tipo: AAAAAA, AAAAAB, .. AAAAAZ, AAAABA, ... ... ZZZZZW, ZZZZZX, ZZZZZY, ZZZZZZ)

I N F O R M A Z I O N E - dati composti Dato di n simboli non equiprobabili, e/o non indipendenti tra loro - calcolo della quantita' di informazione contenuta nella parola "CAROTA" 1) se le lettere sono indipendenti tra loro: I = 6 * 4,6 bit = 27,6 bit (scelta di uno tra 256 = 244.140.625 dati possibili ) 2) MA -osservo che CAROTA e'una parola della lingua italiana (da un dizionario "medio" con 65000 parole) allora l' informazione e' relativa ad un dato su 65000, ovvero log2 ( 65000 ) = 16 bit (... e non 27,6 !! ) (scelta di una parola tra "a", "abaco", "abate", "abbacchiare", ... "zuppa", "zuppiera", "zuppo", "zuzzurullone" (R.C.Melzi, Bantam ed.1976)

I N F O R M A Z I O N E - dati composti Ancora due esempi: 2) informazione data nella parola "PAPAVERO" con lettere indipendenti tra loro: 8*4,6 bit = 36,8 bit (scelta di uno tra 2^37 = 152 miliardi di dati possibili piu’ precisamente, 25 ^ 8 = 152 587 890 625) ---> MA: se diciamo che la parola PAPAVERO e' una parola tratta da un dizionario della lingua italiana con 65000 parole - allora l' informazione e' relativa ad un dato su 65000, ovvero log2 ( 65000 ) = 16 bit come nell'esempio precedente, e non 36,8 bit !!

I N F O R M A Z I O N E - dati composti 3) esempio: quantita’ info. di una stringa di 8 caratteri (alfabeto inglese di 25 lettere): I("TOLMEZZO") = 8 * 4,6 bit = 36,8 bit (ho 8 lettere equiprobabili e indipendenti) invece se considero la quantita’ di informazione di I(Tolmezzo) nel caso in cui so che Tolmezzo e’ nome di una citta' dell'Italia scelta tra mille (assumo il dato preso da una tabella di 1000 citta’) I( un dato su 1000 ) = log2(1000) = 10 bit !!!

I N F O R M A Z I O N E - dati composti ritorniamo sull' esempio per il caso di dato composto con simboli NON indipendenti tra loro: nel dato “CAROTA” , per ipotesi una parola della lingua italiana, la probabilita’ delle singole lettere cambia: per la prima e’ 1/25: “C” per la seconda lettera - deve essere una vocale, oppure una “h”,"r","l","s","n", quindi la probabilita’ e’ 1/10... “CA” la terza lettera ... “CAR” la quarta lettera p(“O”)>1/5 “CARO” la quinta p(“T”) > ... “CAROT” l’ultima lettera .. solo A o E “CAROTA”

I N F O R M A Z I O N E - dati composti 2) es. di dato composto da piu’ simboli - es.: “fondamenti di informxxxxx” L’ informazione di xxxxx e’ praticamente zero [ ma qual’ e’ la quantita’ di informazione / ricevuta / da un destinatario medio del corso di fondamenti di informatica ;-} ] in generale il contenuto informativo di un testo formato da parole, a loro volta formate da lettere, NON e’ semplicemente : (lungh. testo)*(informazione di una lettera alfabeto) e quindi in un testo l' informazione di una lettera non e’ semplicemente I = log2( 1/ prob ) = log2 ( Num.lettere )

I N F O R M A Z I O N E - dati composti il contenuto informativo di un testo formato da stringhe di caratteri non e’ semplicemente num.caratteri * info(carattere) e l' informazione di una lettera non e’ I = log2( 1/ prob ) = log2 ( Num.lettere alfabeto) devo considerare due aspetti: a) i simboli non sono equiprobabili (e questo era noto gia' ai tipografi da secoli) b) simboli legati tra loro, ovvero non sono indipendenti (in una stringa di k simboli i primi k-1 simboli cambiano la probabilita' del k-esimo simbolo ... vediamo

DATO CON SIMBOLI NON EQUIPROBABILI I N F O R M A Z I O N E - cenni DATO CON SIMBOLI NON EQUIPROBABILI es: 32 lanci di una moneta (truccata) ottengo i valori: C C C C C T C C C C C C C T C C C T C C C T C C C C C C C C C C ( 28 croce e 4 testa ) assumo quindi nc nt PC = ----------- PT = ---------- nc + nt nc + nt p(C)=28/32 e p(T)=4/32 -> inform.di un singolo dato: ( I = log2(1/p) ! ) I ( C )= log2(1/p(C)) = log2 ( 32/28 ) = log2 (1,14) = 0,19 I ( T )= log2(1/p(T)) = log2 ( 32/4 ) = log2(8) = 3 I(dato complessivo) = ?

I N F O R M A Z I O N E - dati composti continua caso di simboli indipendenti ma non equiprobabili: se su 32 lanci di una moneta truccata ottengo 28 valori croce e 4 valori testa: C C C C C T C C C C C C C T C C C T C C C T C C C C C C C C C C allora p( C ) = 28/32 e p( T ) = 4/32 e quindi (ricorda: I = log2(1/p) ! ): il verificarsi di un singolo C oppure T porta l’ informazione seguente: I ( C ) = log2(1/p(C)) = log2 ( 32/28 ) = log2 (1,14) = 0,19 I ( T ) = log2(1/p(T)) = log2 ( 32/4 ) = log2(8) = 3 I(dato complessivo) = I (dato) = num(c)*info(c) + num(t)*info(t) ... cioe' : I(dato) = 28* 0,19 + 4 * 3 = 5,6 + 12 = 17,6

I(dato completo) = 28 * 0,19 + 4 * 3 = 5,6 + 12 = 17,6 I N F O R M A Z I O N E - cenni cont. es: 32 lanci: CCCCC TCCCC CCCTC CCTCC CTCCC CCCCC CC (28 croce e 4 testa) quindi: p(C) = 28/32, I (C) = log2(32/28) = 0,19 p(T)= 4/32; I (T) = log2(32/4)= 3 I(dato completo) = 28 * 0,19 + 4 * 3 = 5,6 + 12 = 17,6 Il contenuto informativo medio per simbolo (dato composto da 2 simboli non equiprobabili): I I(tot.dato) med = ----------------------- num.simboli del dato

DUE simboli non equiprobabili, I media / simbolo: I N F O R M A Z I O N E - cenni DUE simboli non equiprobabili, I media / simbolo: il contenuto informativo medio per simbolo (dato composto da 2 simboli non equiprobabili): I(tot.dato) Imed = ----------------------- = num.simboli del dato I(tot.dato) nc*Ic + nt*It = ----------- = --------------- = nc+nt nc + nt nc nt = ----* Ic + ----* It = p(c)*Ic + p(t)*It nc+nt nc+nt

due simboli non equiprobabili, I media / simbolo: I N F O R M A Z I O N E - cenni due simboli non equiprobabili, I media / simbolo: Imed = p(c)*Ic + p(t)*It e in generale per n simboli: Imed=  i p(i) * I (i) Nel caso di due simboli e' certo che uno dei due simboli si verifica, quindi deve essere: p(a)+p(b)=1 --> p(b)=1- p(a), quindi: Imed = p(a) * Ia + p(b) * Ib = = p(a) *( log2(1/p(a)) + (1-p(a))* log2(1/(1-p(a)) ) con un massimo per p(a) = p(b), e’zero se p(a)=0 o se p(a) = 1:

Inf 1 1 1/2 1 Prob I media=p(a) * Ia + p(b) * Ib Conten. inform. medio per simbolo, caso di 2 simboli non equiprobabili: I med = p(a) * Ia + p(b) * Ib , dove nel caso di due simboli vale che: p(a) + p(b) = 1 --> p(b) = 1 - p(a) --> quindi : Inf 1 1 I media=p(a) * Ia + p(b) * Ib = p(a) * (log2(1/p(a)) + (1-p(a)) * log2(1/(1-p(a)) ) =f(p(a)) = figura a destra: massimo per p(a) = p(b) zero se p(a)=0, o se p(a) = 1 1/2 1 Prob

I N F O R M A Z I O N E - info media (carattere) l’informazione media per simbolo per un dato composto da n simboli con probabilita’ diversa: Imed =  i p(i) * I (i) cioe’ Imed =  i { p(i) * (-log2 (p(i) ) ) } In un testo di 10000 lettere casuali (alfabeto di 21 lettere) a distribuzione uniforme avremo 476 volte (in media) ciascuna delle lettere - la quantita’ di informazione per lettera e' I(l) = log2(21) = 4,4 bit Ma in un testo in italiano (o in altra lingua) le probabilita’ delle singole lettere sono diverse.

I N F O R M A Z I O N E - info media (carattere) lettere non equiprobabili: I med = -  i { p(i) * log2 (p(i) ) } si puo' vedere che in un testo italiano di 10000 lettere avremo circa: 1300 e 850 o ... 150 z ... 5 j 1100 i 650 r ... 120 f 1000 a 650 l ... 100 q ed il contenuto di informazione medio per lettera e' I(l) = p(a)*I(a)+p(b)*I(b)+..+p(z)*I(z) = 3,9 bit mentre con lettere equiprobabili I(l) = log2(21) = 4,4 bit

I N F O R M A Z I O N E - info media (carattere) ripetiamo: ... con simboli equiprobabili, l’informazione media di I(lettera) = I ( 1/p ) = I ( N ) = log2(21) = 4,4 bit , con testo di lingua italiana, lettere NON equiprobabili, il contenuto di informazione medio e' piu' piccolo : Imed = -  i { p(i) * log2 (p(i) ) } = ... = 3,9 bit ---------------------------------------------------------------------- ma il contenuto di informazione medio reale per una lettera in un testo di italiano e’ ancora molto piu’ piccolo, perche' le lettere NON sono indipendenti tra loro - vediamo ...

I N F O R M A Z I O N E - info media (carattere) abbiamo visto che: I(lettera/equipr.) = I(1/p) = I(N) = log2(21) = 4,4 bit lettere/nonequipr.: Imed = - i {p(i)*log2 (p(i) )} = 3,9 ora, se immagino che le parole presenti nel testo siano tutte contenute in un dizionario di 65000 parole allora il contenuto info. medio per parola e’: I(parola) = log2(N) = log2(65000) = 16 bit/parola se supponiamo in media 6 lettere per parola, allora Imed(lettera) = I(parola) / 6 = 2,67 bit / lettera ( beh, ... 2,3 bit/lettera se in media le parole hanno 7 lettere, 3,2 bit/lettera se in media le parole hanno 5 lettere ecc ;-)

I N F O R M A Z I O N E - info media (carattere) I(lettera/equipr) = I(1/p) = I(N) = log2(21) = 4,4 bit Imed(lettera/nonequip)= - i {p(i)*log2 (p(i) )}= 3,9 bit Imed(lettere non equiprob = I(parola) / 6 = 2,67 bit e dipendenti tra loro) MA: tenendo conto del contesto (anche le parole non sono indipendenti tra loro !) si arriva ad un valore approssimativo di : 1 bit per lettera

I N F O R M A Z I O N E - info media (carattere) In un generico testo la quantita’ di informazione media per lettera e’ di circa un bit

I N F O R M A Z I O N E - info media (carattere) Lettere, cifre, segni di interpunzione: la rappresenta-zione standard delle lettere in un calcolatore e’ data dalla codifica ASCII che usa 8 bit per lettera (Americ.Standard Code for Inform. Interchange) allora un testo di 800 pagine (75 col * 40 righe) = 75*40*800 = 3000*800 = 2.400.000 lettere - occupa due dischetti da 1,2 mega byte - compattando (memorizzo il testo con codifiche piu' economiche) arrivo a 2,4Mb/8 = 300Kb. oggi sempre piu' in uso UNICODE a 16 bit (vedremo)

I N F O R M A Z I O N E - info media (carattere) si noti che il problema della codifica "economica" rimane attuale anche se la tecnologia offre continuamente dispositivi e mezzi di memoria sempre piu' capienti: 1980 i primi HD in commercio da 10Mbyte... 1999 in commercio dischi da 20 Giga Byte (2.E+10= 8000 libri da 800 pag da 40 righe da 80 caratt) 2005 in commercio dischi da 200 G byte... * un video da 100 minuti su HD, ma 100 video? * esperimenti con misure che producono giga-byte di dati in pochi minuti - quanto in un anno ? * indici di archivi su rete con tera-byte di dati ... tra 5 anni ? ... se si estrapola la situaz. di 5 anni fa?

se voglio salvare un filmato o un video da 90 minuti, codifica dati se voglio salvare un filmato o un video da 90 minuti, con 24 immagini al secondo, precisione 1200x900, avro': schermo a bassa risoluzione, dato da 640*480 (NTSC-VGA) pixel (punti immagine) ciascun pixel richiede 3 byte, quindi 640*480*3 = 307.200*3 = 921.600 byte = 1M byte 24 immagini al secondo significa 24 * 1M = 24M, 90 minuti = 90*60 secondi = 5400 secondi quindi in totale 5400 * 24 immagini, 129.600 immagini e quindi 921.600 * 129.600 = 119.439.360.000 byte = = 119 G byte per un video a bassa qualita' non compresso...

24 immagini al secondo significa 24 * 3M = 72M, codifica dati con risoluzione maggiore, schermo da 1200 x 900 pixel (punti immagine) con 3 byte per pixel, quindi 1200 x 900 x 3 = 3.240.000 byte, circa 3 Mega pixel, 24 immagini al secondo significa 24 * 3M = 72M, 90 minuti = 90*60 secondi = 5400 secondi quindi in totale 5400 * 24 immagini, 129.600 immagini e quindi 3.240.000 * 129.600 = 419.904.000.000 = 420 G byte (video non compresso)... rimane sempre l' esigenza di salvare grandi quantita' di dati in uno spazio (con un numero di byte) il piu' piccolo possibile, esigenza di codifica dati efficiente = compressione dei dati breve cenno di questo aspetto nella parte seguente che riguarda i codici

fine " ... informazione (cenni) " segue: . CODICI

argomenti presentati: codici, rappresentazione, dati codifiche binarie codice ASCII codice UNICODE codici a controllo di errore codici a correzione di errore bibliografia esercizi

Dati = " fenomeni fisici scelti per convenzione codici e dati definizione: Dati = " fenomeni fisici scelti per convenzione al fine di rappresentare informazioni su fatti o idee " La stessa informazione (fatto, idea) puo' essere rappresentata da dati diversi; diremo un valore l'insieme delle rappresentazioni della stessa informazione (fatto,idea). Codice = " un sistema convenzionale di regole per rappresentare informazioni"

Ogni dispositivo (supporto fisico) capace di assumere codici e dati Ogni dispositivo (supporto fisico) capace di assumere due o piu' stati distinti puo' essere usato per rappresentare dei dati : bastoncini intagliati, spaghi annodati, pietre o ossa scolpite, tavolette d’argilla, pergamena, carta stampata, carta perforata, interruttore, anello di ferrite, carica elettrostatica, stato di un circuito bistabile, nastro magnetico, disco ottico, ... ecc)

Ogni dispositivo (supporto fisico) capace di assumere codici e dati Ogni dispositivo (supporto fisico) capace di assumere due o piu' stati distinti puo' essere usato per rappresentare dei dati : La rappresentazione di un dato con un codice e' alla base dei sistemi di scrittura e di numerazione la rappresentazione delle informazioni e' molto antica e ha piu’ di 6000 anni ... il passaggio dagli ideogrammi ad un sistema alfabetico con un numero di simboli minore avviene circa 1000 anni prima di Cristo (ambiente egiziano-fenicio), poi adottato dai greci e in seguito dai latini ...

esempio: il dato " 1.a lettera dell'alfabeto, "A" " : codici e dati esempio: il dato " 1.a lettera dell'alfabeto, "A" " : noi siamo abituati a considerare il simbolo (il carattere) “A” e la "vocale a" (vocale del sistema fonetico della lingua italiana) come equivalenti - ma non sono la stessa cosa: "vocale a" (1.a lettera dell’alfabeto italiano) = dato “A” = un codice per il dato “a” per lo stesso dato [vocale a] abbiamo diversi codici:

per lo stesso dato "vocale a" abbiamo diversi codici: codici e dati per lo stesso dato "vocale a" abbiamo diversi codici: . codice del carcerato: un colpo per a, due per b, tre per c ... supporto qualunqe, equivale al numero uno in sistema unario a  simbolo che rappresenta la lettera a, codice grafico esterno [al calcolatore] "aleph"origine egizia/fenicia/greca/latina.. sorgente-destinatario: persona-persona, supporto: carta; . - codice Morse, usa combinazioni di tre simboli (punto,linea e spazio), supporto: carta/ conduttore elettrico;

simbolo dell’alfabeto sillabico hiragana giapponese codici e dati ripeto .. dato "1.a lettera dell'alfabeto, ‘a’ " , diversi codici: . codice del carcerato: un colpo per a; a  codice grafico esterno, supporto carta; . - cod. Morse, supporto carta/conduttore elettrico ancora: simbolo dell’alfabeto sillabico hiragana giapponese 0100 0001 ASCII - codice interno al calcolatore, binario, destinato ad una macchina (supporti vari),

codifica con cifre decimali: * 1 oppure: * 113 # 2 # 224 @ 3 @ 557 codici e dati es.di codifica: dati 4 simboli - es.: * # @ ? posso codificarli con un altro insieme di simboli prestabilito, ad es. con lettere, o cifre, o altro: codifica con lettere: * con A, # con B, @ con C, ? con D, codifica con cifre decimali: * 1 oppure: * 113 # 2 # 224 @ 3 @ 557 ? 4 ? 668

ancora, dati 4 simboli - es.: * # @ ? codici e dati ancora, dati 4 simboli - es.: * # @ ? posso codificarli utilizzando due simboli, x e y ad esempio: oppure: oppure ancora: * xxx xxyyy xy # xxy yxxyy xyy @ xyx yyxxy xyyy ? xyy yyyxx x le prime due colonne sono una codifica con codici a lunghezza costante, la terza con codici a lunghezza variabile

ancora, dati 4 simboli - es.: * # @ ? codici e dati ancora, dati 4 simboli - es.: * # @ ? posso codificarli utilizzando un solo simbolo, ad esempio: * x # xx @ xxx ? xxxx (codifica con codici a lunghezza diversa!)

a 2 stati soli sono piu’ sicuri !! codici e dati il calcolatore usa la codifica binaria, con DUE SOLI SIMBOLI - perche’ i supporti fisici (memorie) a 2 stati soli sono piu’ sicuri !! acceso/spento; c’e’corrente / non c’e’corrente; magnetizzato N-S / magnetizzato S-N; perforato / non perforato; - da qui l’interesse per l’algebra della logica a due valori falso/vero o zero/uno, - da qui l’uso dei codici a due valori 0/1 = codici binari dati 4 simboli * # @ ? es.di codifica a 2 valori 00 01 10 11 ancora 000 011 101 110

nella codifica binaria, si usano due soli simboli, codici e dati nella codifica binaria, si usano due soli simboli, di solito indicati con 0 zero o falso 1 uno o vero usati anche per rappresentare numeri in base due, detti bit, da binary digit o cifra binaria il calcolatore usa al suo interno solo codici a due valori 0/1 detti codici binari ad esempio per tre simboli : # @ & un es.di codifica binaria: 10 1 101 per cui il dato: # # # @ & & @@@ # @ # si rappresenta: 10 10 10 1 101 101 1 1 1 10 1 10

codici e dati per codificare 4 simboli in binario posso scegliere moltissime soluzioni: ( A B C D sono i 4 simboli da rappresentare) ... esempi di codici: la codifica 4) (numero simboli binari fisso) e’ la piu’ economica, il numero di bit (due) e'uguale al contenuto di informazione di un simbolo (su 4) 1) A 1 B 11 C 111 D 1111 3) A 11000 B 01100 C 00110 D 00011 2) A 101 B 1001 C 10001 D 100001 4) A 01 B 10 C 11 D 00

es.: codice Hufmann, non trattato qui. codici e dati nota: per dati non equiprobabili esistono codici a lunghezza variabile che consentono un risparmio nel numero medio di bit usati, ovvero sono piu' efficienti; i codici a lunghezza variabile tengono conto della frequenza dei simboli nel dato: simboli piu' frequenti avranno un codice piu' breve (circa come scelto da Morse per il suo codice telegrafico); es.: codice Hufmann, non trattato qui.

lo schema di codifica piu' usato e' a numero di bit fisso: codici e dati lo schema di codifica piu' usato e' a numero di bit fisso: un bit per due simboli: A 0 B 1 due bit per tre A 00 B 01 C 10 o per quattro simboli A 00 B 01 C 10 D 11 tre bit per cinque, A 000 B 001 C 010 sei, sette o D 011 E 100 otto simboli, quattro bit per nove..sedici simboli, cinque per 17..32 simboli, eccetera ...

devo usare almeno due bit per quattro simboli, codici e dati devo usare almeno due bit per quattro simboli, ma posso scegliere come associare simbolo-codice in molti modi: un modo: A 00 B 01 C 10 D 11 oppure: A 11 B 00 C 10 D 01 oppure: A 10 B 11 C 00 D 01 oppure ancora: A 01 B 11 C 00 D 10 ecc Quante codifiche con n bit (n fisso) per K simboli? (deve essere n >= log2(K) ) - qui n=2, K=4

Quante codifiche con n bit (n fisso) per K simboli? codici e dati Quante codifiche con n bit (n fisso) per K simboli? (deve essere n >= log2(K) ) se K=4, n=2, posso associare i 4 simboli diversi A, B, C, D ai 4 codici diversi 00, 11, 01, 10 in 4 ! modi diversi (uno dei 4 codici per A, uno dei tre rimanenti per B, uno dei due rimanenti per C, il codice per D rimane fissato), quindi vi sono 4 * 3 * 2 * 1 modi per associare 4 codici a 4 simboli, 4 * 3 * 2 * 1 = 4 ! = 4 * 6 = 24 di seguito sono riportati 12 codici (dei 24 possibili): A 00 00 00 00 00 00 01 01..01 10..10 11..11 B 01 01 10 10 11 11 00 00..11 01..11 01..00 C 10 11 01 11 01 10 10 11..10 00..00 10..10 D 11 10 11 01 10 01 11 10..00 11..01 11..01 1 2 3 4 5 6 7 8 12 13 18 19 24

Quante codifiche con n bit (n fisso) per N simboli? (n >= log2(N) ) codici e dati Quante codifiche con n bit (n fisso) per N simboli? (n >= log2(N) ) ad es. per codificare 25 simboli (alfabeto inglese) devo usare 5 bit (4 bit arrivo fino 16, 5 bit arrivo fino 32), ( ho 32 * 31 * 30 * 29 * 28 .. * 8 * 7 possibili scelte per la codifica ) Normalmente si sceglie l’accoppiamento “per ordine”: ordino i simboli (convenzione: ordine alfabetico), ordino i codici binari (convenz.: numerazione binaria), poi associo i simboli ordinati ai codici ordinati; es. per quattro simboli: A B C D <--> 00 01 10 11 quindi A = 00, B = 01, C = 10, D = 11

numerazione binaria (vedremo di piu’ tra poco): codici e dati numerazione binaria (vedremo di piu’ tra poco): decimale binario(in base due, cifre 0,1) 0 0 1 1 (uno= due alla zero) 2 10 (due, = due alla uno) 3 11 (in base due, cioe’ due(=10) piu’ 1) 4 100 (quattro = due alla due) 5 101 (cinque=quattro+uno) 6 110 (sei = quattro + due) 7 111 (sette=quattro+due+uno) 8 1000 (otto = due alla tre) 9 1001 (nove=8+1) 10 1010 (dieci = 8+2) ecc

due bit per tre o quattro simboli: A 00 B 01 C 10 A 00 B 01 C 10 D 11 codici e dati un bit per due simboli: A 0 B 1 due bit per tre o quattro simboli: A 00 B 01 C 10 A 00 B 01 C 10 D 11 tre bit per cinque, sei, sette o otto simboli: A 000 B 001 C 010 D 011 E 100 A 000 B 001 C 010 D 011 E 100 F 101 A 000 B 001 C 010 D 011 E 100 F 101 G 110 A 000 B 001 C 010 D 011 .. F 101 G 110 H 111

quattro bit per codificare da 9 a 16 simboli: codici e dati quattro bit per codificare da 9 a 16 simboli: A 0000 B 0001 C 0010 D 0011 (1..4) E 0100 F 0101 G 0110 H 0111 (5..8) I 1000 (9) ... I 1000 J 1001 K 1010 L 1011 (9..12) M 1100 N 1101 O 1110 P 1111 (13..16)

con 5 bit posso rappresentare fino 32 simboli codici e dati con 5 bit posso rappresentare fino 32 simboli (vecchio codice per telescrivente Baudot) con 6 bit -> 64 simboli (vecchio codice calcolatori BCD), con 7 bit -> 128 simboli (codice ASCII di 32 + 96 caratteri) con 8 bit -> 256 simboli (codice ASCII esteso) quanti bit per rappresentare i 10.000 simboli della scrittura cinese? (10 bit: 1024, 12 bit: 4096, 14 bit: 16384) => almeno 14

(codice ASCII di 32 + 96 caratteri) codici e dati con 7 bit -> 128 simboli (codice ASCII di 32 + 96 caratteri) con 8 bit -> 256 simboli (codice ASCII esteso) con 16 bit -> 32768 simboli (unicode) (e per un po’ basta)

curiosita' storica ... due supporti dati ormai in disuso: codici e dati curiosita' storica ... due supporti dati ormai in disuso: 1) il nastro perforato (uno dei primi supporti dati usato nel telaio automatico del 1801 di Joseph Jacquard, Lyon) per "registrare" o memorizzare un dato = perforare dei codici binari su nastro; in figura, * sta per perforazione) es. codice di A: 01000 001 (41 esadecimale) es. codice di C: 11000 011 (43 esadecimale) 0 1 2 3 4 5 6 7 8 9 A B C D E F G H I ... Y Z * * * * * * * * * * * * * * * * * * * * * * * * * * * . . . . . . . . . . . . . . . . . . . . . . . . . . * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 1 2 3 4 5 6 7 8

codici e dati 2) scheda perforata (inventata da Hollerith nel 1885, la ditta di Hollerith nata agli inizi del secolo poi negli anni 20 divento’ una ditta di macchine "meccanografiche" o elettrocontabili ... l' IBM) La scheda perforata e' andata in disuso con l'avvento dei sistemi in multiutenza (terminali alfanumerici, anni 70..) e dei personal (TRS, Commodore, Apple, anni 77..). a Trieste esistevano un lettore ed un perforatore di schede ancora nel 1985, il lettore di schede e’ rimasto in uso fino al 90... oggi e'possibile leggere schede perforate solo in una macchina di un museo di informatica...

scheda perforata: codice a 12 bit, 80 caratteri (colonne) codici e dati scheda perforata: codice a 12 bit, 80 caratteri (colonne) il codice di A: 10 01000 00000, (qui sotto, * sta per il codice di B: 10 00100 00000 posizione perforata) 0 1 2 3 4 5 6 7 1 9 A B C D E F G H I J K W X Y Z A A A A A A A A A A A * * * * * * * * * A A A A A A B B B B B B B B B B B B B B B B B B B B * * B B B B * 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 * * * * 1 * 1 1 1 1 1 1 1 1 1 * 1 1 1 1 1 1 1 1 * 1 1 1 1 1 2 2 * 2 2 2 2 2 2 2 2 2 * 2 2 2 2 2 2 2 2 * 2 2 2 2 3 3 3 * 3 3 3 3 3 3 3 3 3 * 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 * 4 4 4 4 4 4 4 4 4 * 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 * 5 5 5 5 5 5 5 5 5 * 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 * 6 6 6 6 6 6 6 6 6 * 6 6 6 6 6 * 6 6 6 7 7 7 7 7 7 7 * 7 7 7 7 7 7 7 7 7 * 7 7 7 7 7 * 7 7 8 8 8 8 8 8 8 8 * 8 8 8 8 8 8 8 8 8 * 8 8 8 8 8 * 8 9 9 9 9 9 9 9 9 9 * 9 9 9 9 9 9 9 9 9 * 9 9 9 9 9 *

Ritorneremo in seguito sui supporti dati oggi piu' usati, ovvero codici e dati Ritorneremo in seguito sui supporti dati oggi piu' usati, ovvero i dischi (di vario genere ... ) i nastri magnetici

A S C I I il codice (leggi: eski... ma anche asci) codici e dati il codice A S C I I (leggi: eski... ma anche asci) American Standard Code for Information Interchange

il codice ASCII per rappresentare un testo semplice: codici e dati il codice ASCII per rappresentare un testo semplice: 32 codici di controllo (corrisp.ai numeri da 0 a 31) 96 codici “stampabili”, sono i simboli (caratteri) stampabili del codice ASCII, lettere (maiuscole, minuscole, alfabeto inglese), cifre (da 0 a 9), simboli vari (aritmetica, punteggiatura, parentesi, ecc) i codici da 128 a 255 hanno significati diversi a seconda della scelta dell'utente. di seguito sono riportati tutti i codici ASCII , a scopo informativo e di consultazione, (NON da memorizzare)

un anticipo sui codici numerici: il numero 10 ha diverse codifiche decimale: ottale esadecimale binario 0 0 0 0 1 1 1 1 2 2 2 10 ... 6 6 6 110 7 7 7 111 8 10 8 1000 9 11 9 1001 10 12 A 1010 11 13 B 1011 .. 14 16 E 1110 15 17 F 1111

codici e dati - tabella ASCII - cont. American Standard Code for Information Interchange = codice ASCII: codice a 7 bit per rappresentare un dato, es.: “riganuova” (NON stampabile) codice num. 10, esadecim. A vediamo alcuni codici: “ “ = codice numero 32, esadecimale: 20 binario: 010 0000 “6” = codice numero 54, esadecimale: 36 binario: 011 0110 “A”= codice numero 65, esadecimale: 41 binario: 100 0001 “a”= codice numero 97, esadecimale: 61 binario: 110 0001 “}”= codice numero 125, esadecimale: 7D binario: 111 1101

codici e dati - tabella ASCII - cont. i primi 32 codici ASCII (da 0 a 31) sono codici NON stampabili, usati per controllo - es.: 8 = back space, 10 = line feed, 13 = carriage return ecc parte codici controllo, da 0 a 31, in decimale / esadec: 0 0 NUL 1 1 SOH 2 2 STX 3 3 ETX 4 4 EOT 5 5 ENQ 6 6 ACK 7 7 BEL 8 8 BS 9 9 HT 10 A LF 11 B VT 12 C FF 13 D CR 14 E SO 15 F SI 16 10 DLE 17 11 DC1 18 12 DC2 19 13 DC3 20 14 DC4 21 15 NAK 22 16 SYN 23 17 ETB 24 18 CAN 25 19 EM 26 1A SUB 27 1B ESC 28 1C FS 29 1D GS 30 1E RS 31 1F US

codici e dati - tabella ASCII - cont. nota: per ottenere uno di questi caratteri speciali con codice 0..31 su una tastiera [di solito] si deve premere assieme il tasto CTRL piu' un altro carattere, es: 3 (EndOfText=CTRL-C); 8 (BackSpace=CTRL-H); 9 (TABula); 10 (LineFeed=caporiga); 12 (FormFeed=capopagina); 13 (Carriage Return= RitornoCarr); 26 (EndOfText in MSDOS); 27 (escape).. alcuni caratteri speciali corrispondono ad un tasto singolo: BackSpace [ 8 ], Esc [ 27 esad. 1B ], Return [ 13 esad. D ], ...

codici e dati - tabella ASCII - cont. di seguito e’ riportata la tabella dei codici ASCII completa (da 32 a 127, i codici da 0 a 31 riportati prima) ...

codici e dati - cont. codici ASCII - codici da 32 a 79 : 32 20 spaz. 33 21 ! 34 22 " 35 23 # 36 24 $ 37 25 % 38 26 & 39 27 ' 40 28 ( 41 29 ) 42 2A * 43 2B + 44 2C , 45 2D - 46 2E . 47 2F / 48 30 0 49 31 1 50 32 2 51 33 3 52 34 4 53 35 5 54 36 6 55 37 7 56 38 8 57 39 9 58 3A : 59 3B ; 60 3C < 61 3D = 62 3E > 63 3F ? 64 40 @ 65 41 A 66 42 B 67 43 C 68 44 D 69 45 E 70 46 F 71 47 G 72 48 H 73 49 I 74 4A J 75 4B K 76 4C L 77 4D M 78 4E N 79 4F O (cont.pag.seg.) es. lettura tabella: ! = codice n.ro 33, esadec. 21, binario 010 0001 C = codice n.ro 67, esadec, 43, binario 100 0011

codici e dati - cont. codici ASCII - codici da 80 a 127 : 80 50 P 81 51 Q 82 52 R 83 53 S 84 54 T 85 55 U 86 56 V 87 57 W 88 58 X 89 59 Y 90 5A Z 91 5B [ 92 5C \ 93 5D ] 94 5E ^ 95 5F _ 96 60 ` 97 61 a 98 62 b 99 63 c 100 64 d 101 65 e 102 66 f 103 67 g 104 68 h 105 69 i 106 6A j 107 6B k 108 6C l 109 6D m 110 6E n 111 6F o 112 70 p 113 71 q 114 72 r 115 73 s 116 74 t 117 75 u 118 76 v 119 77 w 120 78 x 121 79 y 122 7A z 123 7B { 124 7C | 125 7D } 126 7E ~ 127 7F DEL es. lettura tabella: u = codice n.ro 117, esadec. 75, binario 111 0101 ~ = codice n.ro 126, esadec. 7E, binario 111 1110

=> ancora codice ASCII, ... tabella completa : 32 ! 33 " 34 # 35 $ 36 % 37 & 38 ' 39 ( 40 ) 41 * 42 + 43 , 44 - 45 . 46 / 47 0 48 1 49 2 50 3 51 4 52 5 53 6 54 7 55 8 56 9 57 : 58 ; 59 < 60 = 61 > 62 ? 63 @ 64 A 65 B 66 C 67 D 68 E 69 F 70 G 71 H 72 I 73 J 74 K 75 L 76 M 77 N 78 O 79 P 80 Q 81 R 82 S 83 T 84 U 85 V 86 W 87 X 88 Y 89 Z 90 [ 91 \ 92 ] 93 ^ 94 _ 95 ` 96 a 97 b 98 c 99 d 100 e 101 f 102 g 103 h 104 i 105 j 106 k 107 l 108 m 109 n 110 o 111 p 112 q 113 r 114 s 115 t 116 u 117 v 118 w 119 x 120 y 121 z 122 { 123 | 124 } 125 ~ 126 ricorda: il codice ASCII originale prevede 7 bit di codifica, quindi 128 possibili simboli diversi: i codici da 0 a 31 sono caratteri di controllo, non stampabili, i 96 codici da 32 a 127 corrispondono a caratteri stampabili.

il codice ASCII prevede 8 bit; codici e dati il codice ASCII prevede 8 bit; inizialmente l’ottavo bit assumeva sempre un significato di controllo parita’ (vedremo cosa significa) oggi piu’ spesso il codice a 8 bit e’ un ASCII esteso, dove si riservano dei codici per caratteri / simboli speciali, ad es alcune lettere greche, simboli matematici ecc, e codici per caratteri nazionali, che pero’ cambiano significato a seconda della nazione (e quindi cambia tastiera...) ad es: ò oppure ç oppure ž ...

seguono cenni sul CODICE UNICODE vedi su rete http://www.unicode.org/

UNICODE - un codice “per tutti” a 16 bit il codice UNICODE (ISBN 0-201-56788-1, 1990) usa 16 bit per rappresentare un simbolo, e quindi puo’ rappresentare 65000 simboli diversi... i primi 256 codici sono il set ASCII a 8 bit Latin-1, che quasi coincide per i primi 128 codici con il ASCII a 7 bit; vi sono vari codici Latin-extended - esistono centinaia di lingue che usano le lettere latine, ciascuna con varie modifiche o segni modificatori come ¨ ˆ   °  ·  ´  _   gli altri codici sono usati per rappresentare una gran quantita’ di simboli usati in varie lingue del mondo, raggruppando dove possibile (ad es. i set latini, i set cirillici, i set arabi) o definendo codici e regole per parti di caratteri piu’ complicati ( i set che si basano sui simboli cinesi )

UNICODE - un codice “per tutti” a 16 bit ad es.: alfabeti arabo, armeno, bengali, cirillico, copto, devanagari, ebraico, greco, hiragana, katakana, koreano, ecc (vi sono piu' di 2000 lingue "riconosciute" ... ) anche i simboli per le cifre decimali delle varie lingue sono talvolta diversi .... infine sono definiti dei set di simboli piu’ usati (valute, frecce, simboli matematici, “dingsbat” ecc) cioe’ molti set di ideogrammi standardizzati (da http://www.unicode.org/ , e libri ad es. “The Java Programming Language” di K.Arnold e J.Gosling, 1996):

CODICI A CONTROLLO DI ERRORE .. CODICI A CONTROLLO DI ERRORE . . .

codici e trattamento dell'errore legame tra ridondanza/efficienza e codici ed errori contenuto: codici e trattamento dell'errore legame tra ridondanza/efficienza e il controllo di errore * codici a controllo di errore o a segnalazione automatica di errori: raddoppio, parita', ASCII a 8 bit, controllo su blocchi piu' grandi distanza tra due valori di un codice * recupero automatico di errori codici triplicati, controllo incrociato

efficienza e = -------- N med e ridondanza r = 1 - e codici e dati definizione: dato un codice di rappresentazione di k simboli diversi, (event. non equiprobabili, con codifiche di lunghezza eventualmente diversa), si definiscono: I med efficienza e = -------- N med e ridondanza r = 1 - e

esempio: codifica dei 4 simboli: A, B, C, D 1) codice: A 00 B 11 C 01 D 10 <<==== I med = 2 bit (simboli equiprobabili) N bit medio per simbolo: 2 efficienza: I med / N med = 2/2 = 1,0 <-- 2) codice: A 111 B 11 C 1 D 1111 <<==== N bit medio per simbolo: (1+2+3+4)/4 = 10/4 = 2,5 efficienza: I med / N med = 2/2,5 = 0,8 <--

continua esempio codifica di 4 simboli: A, B, C, D 3) codice: A 0001 B 0010 C 0100 D 1000 <<==== I med = 2 bit (simboli equiprobabili) N bit medio per simbolo: 4 efficienza: I med / N med = 2/4 = 0,5 <--

anche se la tecnologia fornisce sistemi sempre piu' affidabili. codici ed errori Problema dell' errore: un dispositivo (un supporto fisico) puo' dar luogo a errori di trasmissione/di registrazione, e' inevitabile, anche se la tecnologia fornisce sistemi sempre piu' affidabili. e' essenziale che il calcolatore stesso - in modo del tutto automatico - controlli e quindi segnali la presenza di un errore - e, se possibile, lo corregga Esistono codici che consentono * la rilevazione e anche * la correzione automatica di errori.

rilevazione di un errore: dato di partenza (37 caratteri): codici ed errori rilevazione di un errore: dato di partenza (37 caratteri): IL PRESIDENTE E' UN GRANDE FILANTROPO trasmesso con codice ASCII, 7 bit/carattere, in tutto 7 * 37 = 259 bit contenuto d'informazione (circa, ipotizzo un dizionario di 16000 parole, quindi 14 bit per parola) 14(bit) * 6(parole) = 84 bit efficienza I / N = 84/259 = 0,33 (prescindiamo dal contenuto di informazione "vero" di un messaggio di questo tipo ;-)

rilevazione di un errore: dato di partenza (37 caratteri): codici ed errori rilevazione di un errore: dato di partenza (37 caratteri): IL PRESIDENTE E' UN GRANDE FILANTROPO codice ASCII, numero bit usati 7 * 37 = 259 bit, contenuto d'informazione 14*6 = 84 bit, efficienza I / N = 84/259 = 0,33 se c'e' un errore in registrazione (o di trasmissione) allora uno dei caratteri trasmessi viene ricevuto errato, es: IL PRESIDENTE E' UN GRANDE FILANTRZPO L'errore viene rilevato e anche corretto: la lettera Z viene facilmente individuata come errore. [ qui siamo noi a fare da “correttori automatici” ]

2) codifica piu' efficiente: utilizzo un dizionario codici ed errori 2) codifica piu' efficiente: utilizzo un dizionario (a disposizione sia del sistema sorgente sia del ricevente) di 16.000 parole; per spedire una parola bastano 14 bit (2^14 = 16384), in tutto sei parole 6*14 = 84 bit (invece dei 37 * 8 = 296 nella codifica di prima) il dato IL PRESIDENTE E' UN GRANDE FILANTROPO codificato [ parola -> numero ] diventa: 6173 11410 4003 15501 5026 4897 -> Suppongo ora che si verifichi un errore, ad es. invece di 4897 ricevo 9897 ..... decodifico ....

2) codifica efficiente con dizionario di 16.000 parole, codici ed errori 2) codifica efficiente con dizionario di 16.000 parole, messaggio codificato (6*14= 84 bit invece di 296) 6173 11410 4003 15501 5026 4897 se si verifica un errore, ad es. invece di 4897 ricevo 9897, ottengo: 6173 11410 4003 15501 5026 9897 che interpretato con lo stesso dizionario da': IL PRESIDENTE E' UN GRANDE MACACO L'errore NON si rileva (tantomeno si corregge) => un codice molto efficente NON permette la rilevazione degli errori !!

ancora un esempio: l’infochimica vi insegnera’come iniziare una nuova vita [testo di 9 parole in tutto 55 caratteri] codifica: solito dizionario di 15000 parole “numerate” della lingua italiana, da dove trovo i numeri progressivi delle parole. Per ogni parola trovo un numero (codice) : come 3021 l’ 8411 infochimica 7953 nuova 10766 iniziare 7977 una 13311 insegnera’ 8042 vi 14850 vita 14903

quindi il messaggio codificato diventa: l’infochimica vi insegnera’come iniziare una nuova vita [9 parole in tutto 55 caratteri, quindi in codice ASCII 55x8 = 440 bit ] codifica: con dizionario di 15000 parole “numerate” come 3021 l’ 8411 infochimica 7953 nuova 10766 iniziare 7977 una 13311 insegnera’ 8042 vi 14850 vita 14903 quindi il messaggio codificato diventa: 8411 7953 14850 8042 3021 7977 13311 10766 14903 invece di 55 caratteri a 8 bit = 440 bit testo ASCII, ho ora 9 numeri da 14 bit = 126 bit ! risparmio per un fattore di 3,5 ! ... ma ...

codici ed errori (cont. es.) messaggio originale (ASCII: 55 caratteri x 8 bit = 440 bit) “l’infochimica vi insegnera’come iniziare una nuova vita” codifica: sost. alle parole i numeri progressivi del dizionario: come 3021 ... iniziare 7977 una 13311 insegnera’ 8042 vi 14850 vita 14903 il messaggio codificato (9 numeri da 14 bit = 126 bit) 8411 7953 14850 8042 3021 7977 13311 10766 14903 con un errore (es. canale disturbato, o memoria con errori) ricevo/leggo rispettivamente nelle due codifiche: “l’infochimica vi insegnera’come inwziare una nuova vita” “8411 7953 14850 8042 3021 7677 13311 10766 14903”

a) messaggio spedito in ASCII ( 440 bit), ricevo: caso di un errore: a) messaggio spedito in ASCII ( 440 bit), ricevo: “l’infochimica vi insegnera’come inwziare una nuova vita” -->> mi accorgo dell’errore, inwziare NON e’ una parola legale! qui anche riesco a correggere !!

b) mess. codificato in numeri, (9 num. da 14 bit = 126 bit) ricevo: ( 7677 invece di 7977) “8411 7953 14850 8042 3021 7677 13311 10766 14903” decodifico con l’aiuto del dizionario (parole numerate): come 3021 l’ 8411 finire 7677 nuova 10766 infochimica 7953 una 13311 iniziare 7977 vi 14850 insegnera’ 8042 vita 14903 MESSAGGIO (con errore) DECODIFICATO diventa: l’infochimica vi insegnera’come finire una nuova vita -->> non mi accorgo dell’errore!

dall'esempio visto segue che * per consentire codici ed errori dall'esempio visto segue che * per consentire la rilevazione ("controllo") di un errore di trasmissione o di registrazione * devo usare un codice ridondante cioe' tale che NON TUTTE le combinazioni di bit sono lecite ovvero non tutti i codici rappresentano un dato.

ricordiamo la definizione dell’ efficienza; il codice A 00 codici ed errori ricordiamo la definizione dell’ efficienza; il codice A 00 B 01 efficienza: e = Imed / Nmed = 2/2 = 1 C 10 .. D 11 ridondanza r = 1 - e = 0 A 000 B 001 efficienza: e = Imed / Nmed = 2/3 = 0,66 C 010 .. D 101 ridondanza r = 1 - e = 0,33

Es: 4 simboli, A B C D - codifica: codici ed errori Es: 4 simboli, A B C D - codifica: 1) non ridondante: uso il minimo di bit A 00 tutti i codici di 2 bit sono legali -> B 01 nessuna ridondanza, massima efficienza, MA C 10 non c' e' possibilita' di rilevare gli errori D 11 ad es: il dato: DABAC codificato e’ 11 00 01 00 10 se c'e' un errore allora ricevo: 11 00 11 00 10 da cui decodifico: DADAC (... non mi accorgo dell'errore !! )

Es: 4 simboli, A B C D 2) codifica ridondante: uso piu’ bit del minimo necessario A 000 non tutti i codici di 2 bit sono legali, c'e' B 001 ridondanza, --> posso rilevare errori C 010 qui uso 3 bit per 4 simboli... D 101 ad es. il dato: DABAC codifica: 101 000 001 000 010 se ho un err. al 10.o bit ricevo: 101 000 001 100 010 -> decodifica: DAB?C ma 100 e'illegale -> mi accorgo dell'errore

attenzione: non tutti i codici ridondanti vanno bene codici ed errori attenzione: non tutti i codici ridondanti vanno bene A 000 questo codice a 3 bit e’scelto un po' a caso... B 001 come vedremo subito, C 010 non e' un buon codice perche' D 101 ... in alcuni casi non mi accorgo dell’errore ... vediamo due esempi: come visto, il codice permette di individuare questo errore: dato DABAC: 101 000 001 000 010 errore al 10.o bit leggo: 101 000 001 100 010 --> in decodifica ho il codice 100 illegale -> rilevo l’errore, ottengo DAB?C MA in altri casi questo stesso codice non va bene:

continua... non tutti i codici ridondanti vanno bene - codici ed errori continua... non tutti i codici ridondanti vanno bene - A 000 come visto, con questo codice B 001 talvolta posso accorgermi C 010 di un errore, ma ... D 101 ... secondo esempio: 2) caso: stesso dato DABAC se ho un err. al 12.o bit (prima era al 10.o): DABAC codifica: 101 000 001 000 010 ricevo: 101 000 001 001 010 --> nella decodifica non rilevo l’errore ! leggo ... DABBC - il codice 001 e' legale->

3) invece del codice senza ridondanza 4 simboli, 2 bit: codici ed errori 3) invece del codice senza ridondanza 4 simboli, 2 bit: A 00 B 01 C 10 D 11 uso il codice: A 0000 qui raddoppio i bit della codifica iniziale B 0011 -> il codice e' meno efficiente (vedi sotto) C 1100 ma posso rilevare piu' errori rispetto il D 1111 codice precedente - questo codice rileva un singolo errore in posizione qualunque! efficienza del codice: e= Imed / Nmed = 2/4 = 0,5 .. ridondanza r = 1 - e = 0,5

codici ed errori ricordiamo: un raddoppio di bit permette il controllo di errore; invece del codice a efficienza 1, A 00 B 01 C 10 D 11 uso un codice: A 0000 questo codice (con num. bit doppio) ha B 0011 efficienza: e = Imed / Nmed = 2/4 = 0,5 C 1100 .. D 1111 ridondanza r = 1 - e = 0,5 rilevo un singolo errore in qualunque posizione ... ma ... e’ un codice troppo ridondante! come deve essere costruito il codice per poter rilevare sempre un singolo errore, senza essere troppo ridondante?

dist(A,B) = 1, dist(A,C) = 1, dist(A,D) = 1 codici ed errori definiamo la distanza tra due valori di un codice come il numero di bit da cambiare per passare da un valore all’altro, ad es. per il codice A 0 1 1 B 0 1 0 C 1 1 1 D 0 0 1 abbiamo: dist(A,B) = 1, dist(A,C) = 1, dist(A,D) = 1 dist(B,C) = 2, dist(B,D) = 2, dist(C,D) = 2 se c’e’ un errore nel dato A, e cioe’ scrivo (trasmetto) il dato 011 -> ma poi leggo (ricevo) il dato 010 -> ottengo il codice di B, che e' un codice legale [qui vi sono coppie di valori (legali) X,Y con dist(X,Y)=1 ] quindi non mi accorgo dell’errore!

distanza tra due valori di un codice = il numero di bit codici ed errori distanza tra due valori di un codice = il numero di bit da cambiare per passare da un valore all’altro: se ho: A 0 1 1 B 0 1 0 C 1 1 1 D 0 0 1 allora : dist(A,B)=1, dist(B,C)=2, dist(B,D)=2, dist(C,D)=2 puo’ verificarsi: trasmetto il dato A=011, ricevo il codice 010 (legale!) = B -> ottengo il dato B [qui vi sono coppie di valori (legali) X,Y con dist(X,Y)=1] un codice con distanza minima tra due codici legali uguale a 1 non permette la segnalazione di errore, perche’ un errore puo’ portare una stringa di bit legale in un’altra stringa di bit legale - perche’ vi sono dati diversi con codifiche distanti di 1 solo bit.

dist(A,B) = 1, dist(A,C) = 1, dist(A,D) = 1 codici ed errori ricorda: la distanza tra due valori di un codice e' il numero di bit da cambiare per passare da un valore all’altro; es: A 0 1 1 B 0 1 0 C 1 1 1 D 0 0 1 dist(A,B) = 1, dist(A,C) = 1, dist(A,D) = 1 dist(B,C) = 2, dist(B,D) = 2, dist(C,D) = 2 NON deve essere possibile che un errore possa portare una stringa di bit legale X in un’altra stringa di bit legale (diversa) Y: per avere la segnalazione di errore un codice deve avere il valore della distanza maggiore o uguale a 2 per tutte le coppie X e Y di valori legali del codice distmin(X,Y)>=2

codici ed errori nota: il codice con i bit raddoppiati NON si usa, perche’ la probabilita’ di un errore in un dato manipolato (trasmesso, memorizzato...) da un calcolatore e’ piccola, e quindi si usano codici con meno ridondanza! Se la probabilita’ di errore e’ ad es. 10E-6 non usero’ un codice con 50% di ridondanza, ma con molto meno. Nei sistemi vecchi di trasmissione e registrazione dati l’affidabilita’ era minore, la probab. di errore piu’ grande, si usava il codice ASCII a 7 bit + 1 bit di controllo di errore (ridondanza di 1/8)...

codici a controllo di parita'. codici ed errori un sistema semplice per avere un codice a controllo di errore e' l' aggiunta di 1 bit al dato, tale che la somma dei bit del dato piu' il bit aggiunto sia pari: codici a controllo di parita'. per 4 simboli (il punto evidenzia il bit di controllo) : A 00.0 B 01.1 C 10.1 D 11.0 con tale codifica il dato B B A D diventa: 011 011 000 110 se ho un errore (ad es. nel 6.o bit): 011 010 000 110 rilevo l'errore nel secondo carattere, perche’ la terna 010 e’ illegale;

nota: il codice senza ridondanza era: A 00 codici ed errori nota: il codice senza ridondanza era: A 00 B 01 efficienza: e = Imed / Nmed = 2/2 = 1 C 10 .. D 11 ridondanza r = 1 - e = 0 il codice con aggiunto un bit di parita' ha: A 000 B 011 efficienza: e = Imed / Nmed = 2/3 = 0,66 C 101 .. D 110 ridondanza r = 1 - e = 0,33 un po' meglio del raddoppio ... ma non tanto (non si usa: il controllo e' fatto su "pacchi" di dati piu' grandi)

nota: ricordiamo il codice ASCII con controllo parita’: codici ed errori nota: ricordiamo il codice ASCII con controllo parita’: se due codici (legali) differiscono di 1 bit, ad es.: a = 110 0001, A = 100 0001, aggiungo un bit di parita’, i due codici differiscono di due bit: a = 110 0001 1, A = 100 0001 0 se differiscono di due bit, il bit di parita’ e’lo stesso, e la distanza e’ sempre di due bit: a = 110 0001, A = 000 0001, aggiungendo un bit di parita’ la distanza rimane due: a = 110 0001 1, A = 000 0001 1 con questa codifica posso sempre rilevare la presenza di un singolo errore ! ==>> CODICE A CONTROLLO DI ERRORE

codice ASCII a 7 bit piu' un bit di parita': a k A codici ed errori codice ASCII a 7 bit piu' un bit di parita': a k A 110 0001 1 110 1011 1 100 0001 0 l'ottavo bit aggiunto e' tale che la somma di tutti i bit e' pari. spedisco questo dato e poi ricevo il dato con un errore: 110 0001 1 110 1111 1 100 0001 0 in ricezione ricalcolo il bit di controllo per ogni carattere e lo confronto con quello letto (ricevuto); ... trovo che il secondo carattere e' errato: infatti 110 1111 => bit di controllo calcolato = 0 => bit controllo ricevuto = 1 sono diversi => c’e’ un err !

due osservazioni sul codice a controllo parita': codici ed errori due osservazioni sul codice a controllo parita': 1) si noti che non posso ricostruire il dato originale, perche’ con un errore posso passare da 000 a 010 oppure da 011 a 010 cioe' un dato errato si puo' ottenere da piu' di un dato originale corretto ... (non e’ un codice a correzione automatica di errore) 2) se si verificano piu' errori in un dato ? allora puo' darsi che da un codice legale si passi ad un altro codice legale -> non si rilevano errori multipli

efficienza e ridondanza per il codice ASCII con controllo di parita’ ? codici ed errori efficienza e ridondanza per il codice ASCII con controllo di parita’ ? (cioe' dove ai 7 bit del dato si aggiunge un bit calcolato in modo che la somma dei bit 0 e 1 risulti pari) es: a k A 110 0001 1 110 1011 1 100 0001 0 efficienza: e = Imed / Nmed = 7 / 8 = 0,875 e la ridondanza r = 1 - e = 0,125 n.b.: sono usati i codici ASCII a controllo di parita', controllo di disparita' e i codici senza controllo

Normalmente la probabilita' di errore e' codici ed errori MA: in un calcolatore la probabilita' di errore e' molto piccola - per rilevare un errore bastano codici con poca ridondanza Normalmente la probabilita' di errore e' (vedere caratteristiche su internet) molto piccola nel caso di trasmissione dati (linee telefoniche, linee dati) ancora piu' piccola nella registrazione su supporti magnetici (dischi) ancora piu' piccola nella memoria centrale del calcolatore:

su blocchi di bit piu' grandi. codici ed errori probabilita' di errore e' piccola -> per rilevare un errore bastano codici con poca ridondanza la probabilita' di errore e' (in ordine decrescente da “piccola” a “molto piccola”): caso di trasmissione dati scrittura/lettura su supporti magnetici (dischetti) scrittura/lettura in memoria centrale del calcolatore: si usa una codifica con ridondanza molto piu' piccola del caso ASCII con controllo parita’: si aggiungono uno o piu' bit di controllo su blocchi di bit piu' grandi.

se sono diversi c'e' un errore nel blocco. codici ed errori Es: aggiungo un carattere (8 bit) di controllo ad ogni blocco di 511 caratteri (511*8 bit), e ho la dimensione complessiva del blocco di 512 caratteri. Il carattere e' calcolato ("in qualche modo", ad es. come somma dei caratteri precedenti, modulo 256) e poi aggiunto (“Cyclic Redundancy Check” / CRC) nella lettura (o in ricezione) ricalcolo il carattere di controllo (dai dati letti/ricevuti) e lo confronto con quello trovato -> se sono diversi c'e' un errore nel blocco.

Molto usato e' il codice CIRC o Cross-interleaved Reed-Solomon Code che usa una codifica con l'algoritmo di Reed e Solomon (anni 60) I sistemi di rilevazione e correzione di errore sono stati definiti gia' negli anni 40 (telecomunicazioni) alcuni nomi: Claude Shannon, Richard Hamming e altri ... (altro corso ;-)

efficienza: e = Imed / Nmed = 511*8 / 512*8 = 0,998 e la aggiungo un carattere (8 bit) di controllo ad ogni blocco di 511 caratteri (511*8 bit) (in totale il blocco avra’ 512 caratteri); il carattere e' calcolato dai caratteri presenti nel blocco dato, e poi aggiunto; nella lettura (o in ricezione) ricalcolo il carattere di controllo (dai dati letti/ricevuti) e lo confronto con quello trovato -> se sono diversi c'e' un errore nel blocco. efficienza: e = Imed / Nmed = 511*8 / 512*8 = 0,998 e la ridondanza r = 1 - e = 0,002 ricorda ASCII con parita’: e = Imed / Nmed = 7 / 8 = 0,875 ridondanza r = 1 - e = 0,125

CODICI A CORREZIONE DI ERRORE (cenni)

e’ un codice che consente la correzione di errore: codici ed errori senza controllo errore: A 00 B 01 C 10 D 11 e= Imed/Nmed = 2/2= 1, r=0 con controllo errore - controllo parita' : A 000 B 011 C 101 D 110 e= Imed/Nmed = 2/3 , r=1/3 oppure raddoppio A 0000 B 0011 C 1100 D 1111 e= Imed / Nmed = 2 / 4 = 0,5; r = 1 - e = 0,5 se triplico i bit del codice senza controllo: A 000000 B 000111 C 111000 D 111111 e= Imed / Nmed = 2 / 6 = 0,33; r = 1 - e = 4 / 6 = 0,66 e’ un codice che consente la correzione di errore:

... un codice che consente la correzione di errore! codici ed errori se triplico i bit del codice senza controllo (2 bit per 4 simboli) ottengo A 000000 B 000111 C 111000 D 111111 ... un codice che consente la correzione di errore! es.: dato originale B B A D spedisco i bit: 000111 000111 000000 111111 con un errore ricevo ad es.: 000111 000111 001000 111111 dove si riconosce il carattere errato e si ricostruisce anche quale era il dato originale ! Si noti che qui la distanza tra due codici legali e' almeno 3 bit. vale: e = Imed / Nmed = 2 / 6 = 0,33; r = 1 - e = 4 / 6 = 0,66

come nel caso di codice a rilevazione di errore codici ed errori come nel caso di codice a rilevazione di errore [versione rudimentale : rraaddooppiioo i bit] se la probabilita’di errore e’ piccola - anche nel caso di codice a correzione automatica dell'errore -> si puo’ fare di meglio vediamo uno schema di codifica un po' meno rudimentale; in ogni caso : aggiungo bit per 1) rilevare se c'e' un errore e aggiungo bit per 2) trovare quale bit del dato e' errato, e quindi correggerlo

es.: 16 simboli, codice senza controllo err. (con r=0) uso 4 bit: codici ed errori es.: 16 simboli, codice senza controllo err. (con r=0) uso 4 bit: A 1000 B 1001 C 1010 ... F 0000 codice a controllo di errore: aggiungo un bit di parita' (totale 5 bit): A 10001 B 10010 C 10100 ... F 00000 codice a correzione automatica di errore: dispongo i bit del dato in due righe da due bit ciscuna, e aggiungo per ogni riga e ogni colonna un bit di parita', in tutto altri 4 bit : A 10 1 B 10 1 quindi: A = 101 000 10 00 0 01 1 quindi: B = 101 011 11 10 11

e ricevo (un errore) ad es. 101 010 10 codici ed errori ripetiamo: codice a correzione automatica di errore: dispongo i bit del dato in due righe da due bit ciascuna, e aggiungo un bit di parita' per ogni riga e ogni colonna: A 10 1 B 10 1 quindi: A = 101 000 10 00 0 01 1 quindi: B = 101 011 11 10 11 se trasmetto A ovvero 101 000 10 e ricevo (un errore) ad es. 101 010 10 rieseguo il controllo righe/colonne e ho: 10 1 . 01 0 .errore nella seconda riga 10 .errore nella seonda colonna -> err. nel bit marcato 101 010 10 -> correz.ne: 101 000 10

e se c’e’ un errore nei bit di controllo parita? codici ed errori e se c’e’ un errore nei bit di controllo parita? Dato di 16 bit: 1 1 0 1 0 0 1 1 0 1 0 1 1 0 0 0 aggiungo dei bit secondo lo schema: 1 1 0 1 1 (aggiungo anche un 0 0 1 1 0 bit di controllo sui bit 0 1 0 1 0 dell’ ultima riga 1 0 0 0 1 (riga di controllo), in tutto 0 0 1 1 0 aggiungo 9 bit su 16, in totale 25 bit Se si verifica un singolo errore ricalcolando i codici di controllo parita’ per le “righe” e per le “colonne” e il bit finale, trovo in quale riga e in quale colonna si trova -> posso correggere.

immagino che ci sia un errore in trasmissione, ricevo: codici ed errori es: dato: 1 1 0 1 0 0 1 1 0 1 0 1 1 0 0 0 aggiungo dei bit secondo lo schema: 1 1 0 1 1 (aggiungo anche 0 0 1 1 0 un bit di controllo 0 1 0 1 0 sui bit della riga 1 0 0 0 1 di controllo, in tutto 0 0 1 1 0 aggiungo 9 bit su 16) immagino che ci sia un errore in trasmissione, ricevo: 1101 1 0011 1 0101 1 1000 1 0011 0 ricalcolo le parita’ sulle righe: errore nella terza riga; ricalcolo la parita’ sulle colonne, trovo che le prime quattro colonne sono a posto -> l’errore e’ nell’ultima colonna -> ho individuato il bit errato, lo correggo.

k bit (dato) + log2(k) bit (controllo) codici ed errori Si osservi che un codice a correzione di errore deve indicare (in qualche modo) la posizione del bit errato - ne ricaviamo l'esigenza minima di questo codice: dato di k simboli: per indicare una posizione su k devo usare al minimo n = log2(k) bit, quindi un codice a correzione automatica dell' errore richiede almeno k bit (dato) + log2(k) bit (controllo) e quindi per un dato di k bit, con k = 4 6 8 32 60 100 128 256 ... devo aggiungere almeno n = 2 3 3 5 6 7 7 8 ... bit ( vedi codice Hamming, 1950 )

a caratteri: controllo parita’ sul carattere codici ed errori oggi la maggior parte dei dispositivi di trasmissione e/o di memorizzazione dati usa codici a controllo di errore: trasmissione dati: a caratteri: controllo parita’ sul carattere a blocchi: blocco con carattere di controllo (cyclic redundancy check, o il codice CIRC) registrazione: a blocchi con controllo crc, sistemi piu’ complessi

memoria centrale del calcolatore (RAM): memoria a celle (gruppi di bit) con controllo errore, memoria a celle con correz. automatica di err. singolo memoria senza controllo (in tal caso il sistema esegue periodicamente delle procedure di controllo scrivi/rileggi su tutta la memoria centrale) ---- ogni dispositivo ha un tasso di errore ammesso proprio grazie ai sistemi a rilevazione e correzione di errore (es.dischi magn.: 1 err ogni Gbit -> ogni secondo!)

J.R.Pierce, "La Teoria dell'Informazione" Ed.Sc.e Tec. Mondadori, 1963 codici ed errori ... BIBLIOGRAFIA: J.R.Pierce, "La Teoria dell'Informazione" Ed.Sc.e Tec. Mondadori, 1963 P.O.Longo, "Teoria dell'informazione", Boringhieri 1980, A.Sgarro, "Crittografia, tecniche di protezione dei dati riservati", Muzzio, 1986, A.Sgarro, "Codici segreti", Mondadori 1988. ecc

definire un codice a controllo di errore ESERCIZI 1) Dati 7 simboli @ # $ % ^ & ” definire un codice a controllo di errore 2) Definire un codice a correzione di errore per + - / 3) Il codice seguente consente il controllo di errore? A 101 B 110 C 011 D 111 4) Calcolare l’efficienza e la ridondanza del codice dell’esercizio 3 5) Il governo cinese ha deciso di utilizzare un codice a 32 bit per codificare i 20000 ideogrammi cinesi; calcolare l’efficienza di tale codice. 6) Quanto spazio risparmia la codifica con numero di matricola [8 cifre decim.] al posto del nome e cognome [20 lettere] immaginando che tale informaz.e appaia 20 volte per studente nell’ archivio [16000 studenti]

1) codice a controllo di errore per @ # $ % ^ & ” esercizi 1) codice a controllo di errore per @ # $ % ^ & ” 7 simboli - 3 bit per codifica almeno, + bit parita’: 0000 @ 0011 # 0101 $ 0110 % 1001 ^ 1010 & 1100 ” 2) Definire un codice a correzione di errore per + - / due bit per codifica di 3 simboli, poi triplico i bit: 000 000 + 000111 - 111000 / 3) Il codice seguente consente il controllo di errore? A 101 B 110 C 011 D 111 no: le codifiche di A e D (BD e CD) hanno distanza uno -> un errore in A puo’ dare il codice di D

4) Calcolare l’efficienza e la ridondanza esercizi 4) Calcolare l’efficienza e la ridondanza del codice dell’esercizio 3 cioe’ A 101 B 110 C 011 D 111 4 simboli - richiesti 2 bit, il codice usa 3 bit -> efficienza: e = Imed / Nmed = 2/3 => 0,66 ridondanza r = 1-e =0,33 5) Il governo cinese ha deciso di utilizzare un codice a 32 bit per codificare i 20000 ideogrammi cinesi; calcolare l’efficienza di tale codice. e = I / N = log2(20000)/32 = 14,3 / 32 = 0,45

se codifico il numero di matricola in binario, uso esercizi 6) Quanto spazio risparmia la codifica con numero di matricola [8 cifre decim.] al posto del nome e cognome [20 lettere] immaginando che tale informaz.e appaia 20 volte per studente nell’ archivio [16000 studenti] per ogni occorrenza risparmio (uso codice ASCII) 12 caratteri, in totale 12 x 20 x 16000 = 12 x 320 000 = 3 840 000 caratteri se codifico il numero di matricola in binario, uso log2(100 000 000) = 27 bit (circa) al posto di 20 x 8 = 160 bit, risparmio 133 bit = 17 car quindi per 20 occorrenze per 16000 studenti ho 320 000 x 17 = 5 440 000 caratteri

FINE PARTE INFORMAZIONE E CODICI segue parte numeri