Rappresentazione dell’Informazione 1 La codifica delle informazioni codifica INFORMAZIONI forma adatta per essere trattata dall’elaboratore DATI interpretazione 2 Il bit Si consideri un alfabeto di 2 simboli: ‘0’, ‘1’ Che tipo di informazione si può rappresentare con un bit? 3 La Cavalcata di Paul Revere Ascoltate Ascoltatefigli figlimiei, miei,vivivoglio voglioraccontare raccontaredidiPaul PaulRevere Revereeedella dellasua suacavalcata cavalcatadidi mezzanotte mezzanottedel del19 19aprile aprile1775. 1775. Coloro Coloroche chepotrebbero potrebberoricordare ricordarequel quelmemorabile memorabilegiorno giornoeel’anno l’annosono sonoormai ormai morti mortitutti. tutti. Egli Eglidisse dissealalsuo suoamico amico“Se “Segli gliinglesi inglesigiungeranno giungerannodalla dallaterra terraoodal dalmare, mare,questa questa notte notteappendi appendiuna unalanterna lanternasula sulacampanile campaniledella dellaOld OldNorth NorthChurch Churchcome come segnale. segnale. Una Unalanterna lanternase sevengono vengonoda daterra, terra,due duese sevengono vengonodal dalmare. mare.Io Iosarò saròsulla sullariva riva opposta oppostapronto prontoaacavalcare cavalcareeedare darel’allarme l’allarmegenerale. generale.In Inogni ognivillaggio villaggiodel del Middlesex Middlesexeeininogni ognifattoria, fattoria,i icontadini contadinisaranno sarannopronti prontiaabattagliare.” battagliare.” Entrambe spente (00): Situazione tranquilla Solo una accesa (01 o 10): Gli inglesi attaccano da terra Entrambe accese (11): Attacco dal mare 4 Informazioni complesse Per codificare i nomi delle 4 stagioni bastano 2 bit Ad esempio: 0 0 per rappresentare Inverno 0 1 per rappresentare Primavera 1 0 per rappresentare Estate 1 1 per rappresentare Autunno Quanti bit per codificare i nomi dei giorni della settimana? 5 Bit Necessari Le macchine hanno vincoli spaziali E’ necessario conoscere il massimo valore rappresentabile Con n bit si può rappresentare al massimo il numero 2n -1 E’ facile determinare che per poter rappresentare fino ad X combinazioni diverse, sono necessari un numero n di bit pari a log2 X Dove la notazione y resitituisce il più piccolo numero intero maggiore o uguale a y 6 Bit necessari In generale, con N bit, ognuno dei quali può assumere 2 valori, possiamo rappresentare 2N informazioni diverse (tutte le possibili combinazioni di 0 e 1 su N posizioni) viceversa Per rappresentare M informazioni dobbiamo usare N bit, in modo che 2N >= M 7 Overflow Esiste un limite al numero di bit impiegati per rappresentare un numero Dato che la rappresentazione è formata da un numero finito di bit, se si supera tale limite si ha errore (overflow) MAX Numero intero rappresentato ... 4 3 2 1 1 2 3 4... Numero intero 8 Codifica binaria Esiste una particolare aggregazione di bit che è costituita da 8 bit (28 = 256 informazioni) e prende il nome di byte Di solito si usano i multipli del byte Kilo KB 210 (~ un migliaio, 1024 byte) Mega MB 220 (~ un milione, 1KB x 1024) Giga GB 230 (~ un miliardo, 1MB x 1024) Tera TB 240 (~ mille miliardi, 1GB x 1024) Peta PB 250 (~ miliardo miliardi, 1TB x 1024) 9 Digitale o Analogico? I segnali analogici sono molto sensibili alle interferenze (rumore) I segnali digitali possono assumere solo due stati Per un dispositivo è semplice distinguere questi due stati, per cui vie è una maggiore immunità alle interferenze 10 Perché Digitale? Una buona foto in bianco e nero presa da un giornale avrà circa 256 sfumature di grigio Rappresentazione analogica 256 gradi di luminosità con una lampada Attenzione alle interferenze provocate dalla nebbia! Rappresentazione digitale 8 lampade (256 configurazioni diverse) Ciascuna configurazione sarebbe più sicura anche in caso di nebbia! 11 Rappresentazione Binaria codifica rappresentazione binaria informazione decodifica Mondo esterno Computer: memorizzazione, elaborazione Analogico Digitale 12 Informazioni Numeri Interi positivi Positivi e negativi Reali Testi Informazioni tradizionali Immagini fisse Vettoriali Bitmap Audio Video Informazioni multimediali 13 Sistemi Numerici 14 Generalità Per determinare un sistema numerico serve Un insieme limitato di simboli (le cifre), che rappresentano quantità prestabilite (1, 2, V, X, M) Le regole per costruire i numeri Sistemi numerici posizionali Sistemi numerici non posizionali 15 Sistemi Numerici Sistemi numerici non posizionali Il valore delle cifre è indipendente dalla posizione Es. Numeri romani Sistemi numerici posizionali Il valore delle cifre dipende dalla loro posizione all’interno del numero Ogni posizione ha un peso 16 Sistemi Numerici Posizionali Esempio N = d3d2d1d0 V(N)=d3p3+d2p2+d1p1+d0p0 N Rappresentazione del numero V(N) Valore del numero Sistemi a base fissa pi = ri r è la base del sistema 17 Il Sistema Decimale È un sistema numerico posizionale a base fissa Il sistema decimale utilizza r = 10 d = 0;1;2;3;4;5;6;7;8;9 18 Sistema Decimale: Esempio Cifra meno significativa Cifra più significativa 8427 = 8 103 + 4 102 + 2 101 + 7 100 19 Sistema Binario Anche il sistema binario è un sistema numerico posizionale a base fissa Il sistema binario utilizza r = 2 d = 0;1 Ogni cifra è detta bit (da BInary digiT) 20 Sistema Binario: Esempio Bit meno significativo (LSB) Bit più significativo (MSB) 10112 = 1 23 + 0 22 + 1 21 + 1 20 = 1110 21 Decimale a Binario Es.: 11510 = 11100112 115 2 1 57 2 1 28 2 0 14 2 0 7 2 1 3 2 1 1 2 1 0 22 Somma binaria La tabella di definizione è: 0+0 = 0 0+1 = 1 1+0 = 1 1+1 = 0 1+1+1= 1 con riporto di 1 con riporto di 1 Esempi 23 Sottrazione binaria La tabella di definizione è: 0-0 1-0 1-1 0-1 = = = = 0 1 0 1 con prestito di 1 dal bit di peso superiore Esempi 24 Altre Basi di Numerazione Comuni Sistema ottale r = 8 d = 0,1,2,3,4,5,6,7 Sistema esadecimale r = 16 d = 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F 25 Esadecimale e Binario Esiste una corrispondenza diretta tra cifre esadecimali e il corrispondente binario Esadecimale: 16 cifre 4 bit per rappresentare una cifra esadecimale 110001102 C 6 26 Conversione da binario ad esadecimale Esiste una corrispondenza diretta tra cifre esadecimali e il corrispondente binario 100010112 15 = 1111 = F 1000 1011 8 Bh 27 Numeri Negativi Esistono diverse possibilità di rappresentazione Modulo e segno (M&S) Complemento a 2 (C2) 28 Modulo e Segno Convenzione per il bit più significativo 0: segno positivo 1: segno negativo Esempio +5 00101 -10 11010 Esistono due rappresentazioni per lo ‘0’ +0 00000 -0 10000 29 Complemento a 2 Dato X in base 2 di n bit 1 + NOT(X) è il complemento a 2 di X Se X=01011, il suo complemento a 2 è 1 + NOT(01011) = 1 + 10100 =10101 Regoletta pratica Il complemento a 2 si calcola analizzando i bit del numero a partire da destra: si riportano invariati tutti gli zeri fino al primo bit a 1, si riporta invariato questo stesso bit a 1, si complementano tutti gli altri bit 30 Complemento a 2 Se dn-1 dn-2 … d2 d1 d0 è un numero binario rappresentato in C2 a n bit, l’equivalente decimale si calcola come -2n-1dn-1+2n-2dn-2+…+22d2+21d1+d0 31 Osservazioni sul C2 Unica rappresentazione dello ‘0’ I numeri positivi hanno il bit più significativo (segno) posto a zero I numeri negativi sono rappresentati dal complemento a 2 del corrispondente numero positivo, segno compreso Esempio +310 000112 C2(000112) = 111012 111012 -310 32 Complemento a 2 vs. M&S Usando modulo e segno La somma algebrica di numeri positivi e negativi può generare problemi Servono sistemi hardware specifici per la gestione corretta del formato E' necessario riconoscere il segno dal primo bit Usando il complemento a due La sottrazione si esegue con una somma! 33 Intervallo di Valori Rappresentabili Rappresentazione M&S -2n-1 + 1 N 2n-1 - 1 Rappresentazione C2 -2n-1 N 2n-1 - 1 34 Rappresentazione Numeri Reali E’ spesso necessario utilizzare numeri reali Due rappresentazioni Virgola Fissa Virgola Mobile 35 Virgola Fissa Intero 0 1 0 1 0 0 1 1 = 26 + 24 + 21 + 20= 83 -27 26 25 24 23 22 21 20 Virgola Fissa 0 1 0 1 0 0 0 0 = 2-1 + 2-3 = 0.5 + 0.125 = 0.625 -20 2-1 2-2 2-3 2-4 2-5 2-6 2-7 36 Virgola Mobile E’ la risposta alla necessità di manipolare numeri di ordini di grandezza diversi Notazione scientifica (numeri espressi nella forma) X.YYY * 10W X: parte intera Y: parte frazionaria W: esponente 37 Virgola Mobile Nomenclatura A = M * BE M: mantissa B: base E: esponente Necessita di un segno per la mantissa e uno per l’esponente 38 Virgola Mobile Forma normalizzata Numero = ± 1.XXXXXXX * 2a .XXXXXXX parte frazionaria a è detto esponente vero 39 Virgola Mobile Rappresentazione IEEE P754 (32 bit) 1 bit per il segno 8 bit per l’esponente (rappresentazione eccesso 127) 23 per la mantissa (parte frazionaria - normalizzata) 31 30 23 Segno Esponente S E 1 8 22 0 Mantissa F 23 SS E-127 N = (-1) 2 N = (-1) 2E-127 1.F 1.F 40 Virgola mobile L'esponente influisce principalmente sul numero massimo (e di conseguenza minimo). La mantissa influisce principalmente sull'approssimazione (ovvero sulla precisione). 41 Virgola mobile La procedura standard per la conversione da numero decimale a numero binario P754 single è la seguente: Prima di tutto il numero, in valore assoluto, va convertito in binario. Il numero va poi diviso (o moltiplicato) per 2 fino a ottenere una forma del tipo 1,xxxxxx. Di questo numero viene eliminato l'1 iniziale (per risparmiare memoria) Il numero di volte per cui il numero è stato diviso (o moltiplicato) per 2 rappresenta l'esponente: questo valore (decimale) va espresso in eccesso 127, ovvero è necessario sommare 127 e convertire il numero risultante in binario. Nel caso di rappresentazione a precisione doppia (v. definizione seguente) il valore dell'esponente viene espresso in eccesso 1023. 42 Virgola mobile Per esempio, convertiamo il valore − 14,312510 in binario P754: Convertiamo prima di tutto il numero: 1410 = 11102 per la parte intera e 0,312510 = 0,01012. Quindi il numero definitivo è 1110,01012 (segno escluso). Dividiamo poi il numero per 2 per ottenere la seguente notazione: 1110,01012 = 1,11001012 * 23 La mantissa diventa, quindi: 1100101. Per esprimere l'esponente in eccesso 127, infine: 127 + 3 = 13010 = 100000102 Il numero, alla fine, sarà espresso nel formato: 1 10000010 11001010000000000000000 43 Virgola mobile 0,312510 = 0,01012 Alternativa: 0,3125 / 0,5 = 0,625 → riporto 0 0,625 / 0,5 = 1,25 → riporto 1 0,25 / 0,5 = 0,5 → riporto 0 → riporto 1 0,5 / 0,5 = 1 (ovvero 2-1) 44 Virgola mobile 0,312510 = 0,01012 Devo esprimere 0,3125 in forma normalizzata, divido per 0,5 (ovvero 2-1) fin quando non ottengo un intero: 0,3125 / 0,5 = 0,625 / 0,5 = 1,25 / 0,5 = 2,5 / 0,5 = 5 Ho diviso 4 volte 5=1012 -4 La forma normalizzata sarà data da 1012*2 , ovvero 0,01012 Nota bene: dividere per 0,5 equivale a moltiplicare per 2. 45 Virgola mobile In base al numero di bit che abbiamo a disposizione possiamo utilizzare tre formati: il formato a precisione singola (32 bit), il formato a precisione doppia (64 bit) e il formato a precisione quadrupla (128 bit). Nel primo caso possiamo scrivere il valore utilizzando 1 bit per il segno, 8 bit per l'esponente e 23 bit per la mantissa Nel secondo caso servirà 1 bit per il segno, 11 bit per l'esponente e 52 per la mantissa. Nel terzo caso servirà 1 bit per il segno, 15 bit per l'esponente e 112 per la mantissa. 46 Problemi con la virgola mobile In generale, questo tipo di numeri si comportano in modo molto simile ai numeri reali. Tuttavia ciò porta spesso i programmatori a non considerare l'importanza di un'adeguata analisi numerica sui risultati ottenuti. Ci sono molte incongruenze tra il comportamento dei numeri in virgola mobile in base 2 impiegati nell'informatica e quello dei numeri reali, anche in casi molto semplici (ad esempio la frazione 0,1 che non può essere rappresentata da nessun sistema binario in virgola mobile). Per questo non è un formato impiegato ad esempio in campo finanziario. 47 Numeri speciali Categoria Esp. Mantissa Zeri 0 0 Numeri denormalizzati Numeri normalizzati 0 non zero 1-254 qualunque Infiniti 255 0 Nan (not a number) 255 non zero 48 Limiti della precisione singola Esponente 0 1 2 10 11 23 24 127 Minimo 1 2 4 1024 2048 8388608 16777216 1.7014e38 Massimo 1.999999880791 3.99999976158 7.99999952316 2047.99987793 4095.99975586 16777215 33554430 3.4028e38 Precisione 1.19209289551e-7 2.38418579102e-7 4.76837158203e-7 1.220703125e-4 2.44140625e-4 1 2 2.02824096037e31 49 Esercizi Calcolare la rappresentazione binaria P754 dei seguenti numeri decimali: +1,58 -34652,6 0,000346526 -4,53 * 10-3 50 Memorizzazione su Calcolatore e Codici 51 Bit, Byte e Word L'unità atomica è il bit (BInary DigiT) L'insieme di 8 bit è detto byte Word Tipicamente 16, 32 o 64bit Insieme di bit la cui dimensione è una importante caratteristica del calcolatore considerato. Essa influenza La larghezza degli indirizzi La dimensione dei registri del processore Larghezza dei bus (word o multipli di essa) 52 Intervalli di Variabilità Bit Numero di configurazioni: 2 Intervallo di variabilità: {0,1} Byte Numero di configurazioni: 256 Intervallo di variabilità: dipende dal tipo di codifica 53 Intervalli di Variabilità (byte) Modulo 256 configurazioni Intervallo di Variabilità: [0, 255] Modulo e segno 256 configurazioni Intervallo di Variabilità: [-127, +127] Complemento a 2 256 configurazioni Intervallo di Variabilità: [-128, +127] 54 Codifica dei Testi Si utilizza una tabella (arbitraria) Standard oggi (quasi) universalmente riconosciuto Codice ASCII (American Standard Code for Information Interchange) Ogni carattere (simbolo) è codificato con 7 bit 128 simboli diversi 55 Tabella dei Codici ASCII 56 Codice ASCII - note I caratteri alfabetici sono consecutivi e in ordine (alfabetico) La distanza tra una lettera minuscola e la corrispondente maiuscola è costante Le cifre decimali sono consecutive e in ordine (da 0 a 9) Grazie alla codifica numerica è possibile dire che B = A + 1 oppure che A = a - 32 57 Codice ASCII Esteso Si utilizzano 8 bit 256 simboli diversi 58 UNICODE Abbiamo considerato il codice Extended ASCII: 8 bit per carattere È stato basato dal codice ASCII: 7 bit per carattere Il codice ASCII non include à, è, é, ì, ò, ù, per esempio Un altro codice UNICODE, 16 bit per carattere (Extended ASCII + caratteri etnici) 216 = 65.536 simboli 59 UNICODE - Font In informatica il tipo di carattere o font è un insieme di caratteri tipografici caratterizzati e accomunati da un certo stile grafico. 60 Font the quick brown fox jumps over a lazy dog the quick brown fox jumps over a lazy dog the quick brown fox jumps over a lazy dog the quick brown fox jumps over a lazy dog the quick brown fox jumps over a lazy dog the quick brown fox jumps over a lazy dog thequick brown fox jumps over a lazy dog 61 Rappresentazione di parole Abbiamo visto come rappresentare i singoli caratteri, ma le parole? In informatica le parole sono “stringhe”, ovvero concatenazioni di caratteri. 62 Stringhe Supponiamo di voler codificare la parola “STUDENTE”: STUDENTE = 83 ; 84 ; 85 ; 68 ; 69 ; 78 ; 84 ; 69 Ovvero la parola studente è composta da 8 caratteri in sequenza. 63 Suono digitale Formato standard per i CD audio • frequenza di campionamento di 44'100 Hz • quantizzazione su 65'536 livelli (un campione viene codificato su 16 bit) Un secondo di musica stereo richiede 44'100 campioni di 16 bit (2 byte) ciascuno per due canali, quindi 176'400 byte. L’errore che si commette nella ricostruzione del segnale sonoro è difficilmente rilevabile da parte di un orecchio umano. Foto digitali Per la codifica digitale delle immagini le operazioni di campionamento e quantizzazione si applicano nello spazio invece che nel tempo. Il campionamento consiste nel dividere l’immagine in sottoinsiemi (pixel, cioè picture element), per ognuno dei quali si dovrà prelevare un campione che si considera rappresentativo del colore di tutto il sottoinsieme. La quantizzazione è la codifica del colore associato a ogni pixel: i più recenti formati utilizzano 32 bit (4 byte) per pixel: 8 bit per ognuna delle tre componenti fondamentali (RGB: red, green, blue) e altri 8 per gestire le trasparenze. Memoria necessaria per immagini non compresse (bitmap) • • • • • • per un’immagine per un’immagine per un’immagine per un’immagine per un’immagine … di 640480 pixel servono 1'228'800 byte; di 800600 pixel servono 1'920'000 byte; di 1024768 pixel servono 3'145'728 byte; di 12801024 pixel servono 5'242'880 byte; di 16001200 pixel servono 7'680'000 byte; Il successo del digitale Rumore: effetto dell’ambiente sul supporto. Tensione (V) Quanto un supporto è “immune” 5 al rumore? • Codifica analogica: analogica ogni configurazione è lecita dal punto di vista informazionale e quindi risulta impossibile distinguere il rumore dal segnale. • Codifica digitale: digitale un valore binario è associato a un insieme di configurazioni valide quindi si può • riconoscere il rumore che porta in configurazioni non lecite • trascurare il rumore che non fa uscire il segnale dall’insieme associato alla stessa configurazione 4 3 2 1 0 1 binario Non lecito 0 binario Come ridurre il numero di bit Esempio • successione di un milione di caratteri, ognuno scelto dall’insieme {A, C, G, T}; T} • la frequenza dei quattro caratteri all’interno della successione non è uguale: A si presenta nel 50% dei casi, C nel 25%, 25% G e T solo nel 12.5% dei casi. Codifica digitale a lunghezza costante • due bit per ciascuno dei simboli, per esempio: A = 00, A = 00 C = 01, C = 01 G = 10 e T = 11; T = 11 • la lunghezza complessiva della successione è quindi pari a 2 milioni di bit. bit Codifica a lunghezza variabile (che tenga conto della distribuzione) • A = 0, A = 0 C = 10, C = 10 G = 110 e T = 111; T = 111 • la lunghezza complessiva della successione è di 1.75 milioni di bit (1×50% + 2×25% + 3×12.5% + 3×12.5%) bit/carattere × 1 milione di caratteri Il cambiamento di codifica permette di ridurre il numero di bit utilizzato senza perdere informazione. La compressione dei dati Gli algoritmi di compressione dei dati possono essere distinti in due categorie fondamentali • Compressione lossless, lossless se non provoca la perdita di informazione • Compressione lossy, lossy se provoca la perdita di informazione Gli algoritmi di compressione lossless sfruttano le regolarità nei dati • RLE (Run Length Encoding): successioni di n simboli uguali vengono rappresentati con una coppia <simbolo, n> • Tecniche basate su dizionario: sequenze di simboli ripetute trovate analizzando i dati sono sostituite con simboli elementari memorizzando le corrispondenze in un dizionario Gli algoritmi di compressione lossy sono specifici per i diversi domini applicativi. Un semplice esempio con dizionario Compressione lossless con tecnica basata su un dizionario • Testo di esempio: “I re di Francia della dinastia Carolingia sono: Carlo II, Luigi II di Francia, Luigi III di Francia, Carlomanno di Francia, Carlo III detto il grosso, Odo, Carlo III detto il semplice, Roberto I di Francia, Rodolfo Duca di Borgogna, Luigi IV di Francia, Lotario di Francia, Luigi V di Francia” (lunghezza: 292 caratteri) Analisi delle regolarità presenti nel testo: • Si individuano le sequenze ripetute (parole) contando le ripetizioni e si compila il dizionario (vedere tabella) • Si assegna un simbolo che la sostituisce ad ogni parola • Il testo diventa: “I re 1 2 della 1nastia Carolingia sono: 5 3, 4 3 1 2, 4 3I 1 2, 5manno 1 2, 5 3I 6 7 grosso, Odo, 5 3I 6 7 semplice, Roberto I 1 2, Rodolfo Duca 1 Borgogna, 4 IV 1 2, Lotario 1 2, 4 V 1 2” (lunghezza: 187 caratteri + 35 caratteri per il dizionario = 222 caratteri - 76% della lunghezza originaria) Indice Parola N 1 di 1 0 2 Francia 8 3 II 5 4 Luigi 4 5 Carlo 4 6 detto 2 7 il 2