Elementi di Informatica e Programmazione La Codifica dell informazione (parte ) Corsi di Laurea in: Ingegneria Civile Ingegneria per l Ambiente e il Territorio Università degli Studi di Brescia Premessa Nella prima lezione è stato presentato il concetto astratto di calcolatore: non com è fatto o come funziona, ma che cos è in sé Concetto di problema (classe di domande omogenee, alle quali si possa dare risposta con una procedura uniforme), istanza, soluzione Concetto di algoritmo (specifica attraverso una sequenza di istruzioni come produrre una soluzione per ogni istanza) Il calcolatore come esecutore universale di algoritmi Ora cominciamo a esaminare come in pratica i calcolatori attuali sono costruiti, quali sono le loro componenti e le rispettive funzioni Cominciamo da un sistema di elaborazione elementare Docente: Daniela Fogli Daniela Fogli Elementi di Informatica e Programmazione 2 Architettura di Von Neumann Funzionamento dell architettura di Von Neumann Si basa sui seguenti principi: ambiente NOTE: CPU = Central Processing Unit (Unità centrale) detta oggi Microprocessore o processore Dispositivi di I/O Bus di sistema CPU Memoria Dati e istruzioni del programma da eseguire sono memorizzati nella memoria centrale Il processore (CPU) legge e scrive in memoria per acquisire le istruzioni da eseguire e i relativi dati e per memorizzare i risultati delle istruzioni eseguite Le istruzioni vengono acquisite ed eseguite dalla CPU in modo sequenziale. Reperimento dell istruzione da eseguire 2. Interpretazione dell istruzione 3. Esecuzione dell istruzione Le singole operazioni necessarie per l esecuzione delle istruzioni sono scandite da un orologio di sistema (clock) che definisce l evolvere del tempo all interno della macchina Daniela Fogli Elementi di Informatica e Programmazione 3 Daniela Fogli Elementi di Informatica e Programmazione 4
Programma e dati in memoria Bus Indirizzo In memoria viene caricata la forma binaria del programma zona della memoria che contiene le istruzioni zona della memoria che contiene i dati Insieme di collegamenti (linee) che permettono di trasferire dati da più sorgenti a più destinazioni (componenti del calcolatore) Il bus può essere suddiviso funzionalmente in: Bus dati (trasferisce i dati scambiati tra componenti) Bus indirizzi (trasferisce gli indirizzi della memoria o delle interfacce di ingresso-uscita coinvolte nel trasferimento) Bus comandi o di controllo (trasferisce segnali di controllo che regolano le operazioni del sistema di elaborazione) zona libera MEMORIA NB: non distinguibili in sé, è il programma che ne stabilisce il significato fine della premessa Daniela Fogli Elementi di Informatica e Programmazione 5 Daniela Fogli Elementi di Informatica e Programmazione 6 Il concetto di informazione e supporto Informazione: entità che può essere comunicata Non può esistere informazione senza supporto fisico: mezzo su cui l informazione può essere memorizzata e attraverso cui può essere trasmessa... Programmi, dati, risultati, indirizzi sono informazioni Ora vediamo come si RAPPRESENTANO nel calcolatore Un brano musicale Il CD in cui è memorizzato L aria attraverso cui viene trasmesso Daniela Fogli Elementi di Informatica e Programmazione 7 Daniela Fogli Elementi di Informatica e Programmazione 8
Proprietà di un supporto Codice Il supporto deve poter assumere configurazioni differenti altrimenti non è in grado di portare informazione Ad ogni configurazione viene associata una differente entità di informazione Il caso più semplice: 2 configurazioni possibili Esempi: interruttore acceso/spento, tensione sì/no, circuito aperto/chiuso Elemento di informazione rappresentato dalla configurazione del supporto (es. soccorso sanitario: ) Associazione simboli-significati: convenzione semantica Es. di convenzione semantica alternativa: soccorso sanitario: Successione di simboli Attività di interpretazione E necessario un codice: un insieme di regole che stabiliscono le associazioni fra configurazioni e entità di informazione Entità di informazione Daniela Fogli Elementi di Informatica e Programmazione 9 Daniela Fogli Elementi di Informatica e Programmazione Esempio di codice Codifica e Decodifica Attraverso il codice si attribuisce un significato convenzionale a ciascuna configurazione che il supporto può assumere Codifica = operazione con cui l informazione viene scritta (su un supporto fisico) Decodifica = operazione con cui l informazione viene letta (da un supporto fisico) ES., 2 dadi lettera A codifica Il numero dieci Informazione lettera B. decodifica Supporto fisico Daniela Fogli Elementi di Informatica e Programmazione Daniela Fogli Elementi di Informatica e Programmazione 2
Codifica dei dati e delle istruzioni Codifica binaria Programma = istruzioni che operano su dati Istruzioni e dati devono essere rappresentate (codificate) secondo il linguaggio noto all esecutore L esecutore deve essere infatti in grado di memorizzare e manipolare istruzioni e dati Nel caso del calcolatore, istruzioni e dati vengono codificati come sequenze di e Poiché il nostro esecutore utilizza componenti a 2 soli stati, è in grado di riconoscere solamente sequenze di e Alfabeto binario = {, } dove e sono dette cifre binarie o BIT (Binary digit) Importanza tecnologica: Dispositivi a due stati (livelli di tensione, magnetizzazione, ) Semplicità di realizzazione Affidabilità Tutti i calcolatori elettronici e i dispositivi magnetici di memorizzazione utilizzano tale corrispondenza Daniela Fogli Elementi di Informatica e Programmazione 3 Daniela Fogli Elementi di Informatica e Programmazione 4 Bit, Byte, KiloByte, MegaByte,... Il problema della rappresentazione Bit = oppure Byte = 8 bit = 2 3 KiloByte (KB) = 2 byte =.24 byte MegaByte (MB) = 2 2 byte =.48.576 byte GigaByte (GB) = 2 3 byte =.73.74.824 byte TeraByte (TB) = 2 4 byte = PetaByte (PB) = 2 5 byte = ExaByte (EB) = 2 6 byte = Insieme di oggetti che vogliamo rappresentare Problema: assegnare un codice univoco a tutti gli oggetti compresi in un insieme Insieme di simboli disponibili nel calcolatore = {, } Ho n oggetti da codificare e 2 soli simboli, quanto è la lunghezza k delle sequenze di simboli? Oppure: dispongo di sequenze di lunghezza k di simboli e, quanto è il numero n di oggetti che posso codificare? Daniela Fogli Elementi di Informatica e Programmazione 5 Daniela Fogli Elementi di Informatica e Programmazione 6
Codice binario a n bit Funzione: - dominio (insieme di oggetti da rappresentare) - codominio: insieme di tutte le possibili sequenze di n bit Funzione biunivoca tra il dominio e la sua immagine, detta insieme delle codifiche Esempio di codice binario a 3 bit: O O 2 O 3 insieme delle codifiche Codifica binaria Se k = Posso codificare due oggetti (n=2): al primo assegno il codice e al secondo assegno il codice Se k = 2 Posso codificare n=4 oggetti:,,, Se k = 3 Posso codificare n=8 oggetti:,,,,,,, Qual è la regola???? (Ipotesi implicita: i codici hanno tutti la stessa lunghezza) dominio codominio Daniela Fogli Elementi di Informatica e Programmazione 7 Daniela Fogli Elementi di Informatica e Programmazione 8 n = 2 k k = log 2 n Esempio: i mesi dell anno Se ho a disposizione sequenze di k = 5 bit, quanti elementi posso codificare? n = 2 5 = 32 elementi Se n = 28, di quanti bit ho bisogno (k) per codificarli tutti? k = log 2 28 = 7 e se n = 29??? Allora ho bisogno di bit in più! Ottengo uno spreco di configurazioni, perché con 8 bit posso codificare fino a 256 elementi Gennaio Febbraio Marzo Aprile Maggio Giugno Luglio Agosto Settembre Ottobre Novembre Dicembre bit 2 gruppi Gennaio Febbraio Marzo Aprile Maggio Giugno Luglio Agosto Settembre Ottobre Novembre Dicembre Gennaio Febbraio Marzo Aprile Maggio Giugno Luglio Agosto Settembre Ottobre Novembre Dicembre 3 bit 8 gruppi 2 bit 4 gruppi Gennaio Febbraio Marzo Aprile Maggio Giugno Luglio Agosto Settembre Ottobre Novembre Dicembre Gennaio Febbraio Marzo Aprile Maggio Giugno Luglio Agosto Settembre Ottobre Novembre Dicembre 4 bit 6 gruppi mancano 4 configurazioni! Daniela Fogli Elementi di Informatica e Programmazione 9 Daniela Fogli Elementi di Informatica e Programmazione 2
Esempio: codifica BCD Tipologie di codici Cifra Codifica binaria decimale rappresentata b 3 b 2 b b 2 3 4 5 6 7 8 9 codifiche non usate Nel seguito vedremo tipologie di rappresentazioni diverse: Senza assumere limitazioni sul numero di bit a disposizione: per numeri [notazione binaria, ovvero posizionale con base 2] Disponendo di un numero di bit limitato: numeri naturali interi relativi [valore assoluto e segno, compl. a, compl. a 2] reali [virgola fissa e virgola mobile] valori logici, caratteri alfabetici, testi suoni, immagini e sequenze video codici per la rilevazione e correzione di errori Codici di compressione (senza con perdita) Daniela Fogli Elementi di Informatica e Programmazione 2 Daniela Fogli Elementi di Informatica e Programmazione 22 Tipologie di codici Sistema di numerazione posizionale Nel seguito vedremo tipologie di rappresentazioni diverse: Senza assumere limitazioni sul numero di bit a disposizione: per numeri [notazione binaria, ovvero posizionale con base 2] Disponendo di un numero di bit limitato: numeri naturali interi relativi [valore assoluto e segno, compl. a, compl. a 2] reali [virgola fissa e virgola mobile] valori logici, caratteri alfabetici, testi suoni, immagini e sequenze video codici per la rilevazione e correzione di errori Codici di compressione (senza con perdita) Daniela Fogli Elementi di Informatica e Programmazione 23 Ad ogni cifra del numero è attribuito un peso a seconda della sua posizione all interno del numero Sistema di numerazione posizionale in base b: Numero N b = c k c k- c k-2 c.c - c -2 c c -h Dove c k è la cifra più significativa mentre c è la cifra meno significativa (prima della virgola) (c - è quella più significativa della parte frazionaria, c -h quella meno significativa) N b è il numero ottenuto facendo: c k xb k +c k- xb k- +c k-2 xb k-2 +c xb +c - xb - + +c -h xb -h Esempio: b=, il numero 3256.234 dove c 3 = 3, c 2 = 2, c = 5, c = 6, c - =2, c -2 =3, c -3 =4 rappresenta 3x 3 + 2x 2 + 5x + 6x + 2x - + 3x -2 + 4x -3 = = 3 + 2 + 5 + 6 +.2 +.3 +.4 Daniela Fogli Elementi di Informatica e Programmazione 24
Le basi più comuni Notazione Binaria Base = 2 Cifre:, Se la base è b, allora le cifre che possono essere utilizzate per comporre un numero vanno da a b- Esempio: b =, cifre possibili: [,,2,3,4,5,6,7,8,9] Esempio: b = 2, cifre possibili: [,] Esempio: b = 8, cifre possibili: [,,2,3,4,5,6,7] Esempio: b = 6, cifre possibili: [,,2,3,4,5,6,7,8,9,A, B,C,D,E,F] Numeri espressi nella forma (a n a n- a a. a - a -2 ) due [a i {,}] il cui valore è (a n *2 n + a n- *2 n- + + a *2 + a - * 2 - + a -2 *2-2 ) ESEMPIO N =. due N = 2 5 + 2 4 + 2 3 + 2 2 + 2 + 2 + 2 - + 2-2 + 2-3 + 2-4 = = 43.6875 dieci Daniela Fogli Elementi di Informatica e Programmazione 25 Daniela Fogli Elementi di Informatica e Programmazione 26 Conversione binario decimale Domande Come visto, la conversione si ottiene direttamente dalla definizione stessa di numero binario Scriviamo i numeri denotando la base attraverso il pedice: es.. due E facile convertirlo in un numero decimale facendo:. due = x2 3 + x2 2 + x2 + x2 + x2 - = 8 dieci + 4 dieci + dieci + + dieci +.5 dieci = 3.5 dieci Altri esempi:. due = x2 4 + x2 3 + x2 2 + x2 + x2 + x2 - + x2-2 = 6 + + 4 + +.25 = 2.25 dieci. due = x2 5 + x2 4 + x2 3 + x2 2 + x2 + x2 + + x2-3 = = 32 + 6 + 2 +.25 = 5.25 dieci due = x2 6 + x2 5 + x2 4 + x2 3 + x2 2 + x2 + x2 = 64 + = 65 dieci Il numero binario due è pari o dispari? A quale numero decimale corrisponde? due = (x2 8 + x2 7 + x2 6 + x2 5 + x2 4 + x2 3 + x2 2 + x2 + x2 ) dieci = (256 + 64 + 8 + 2 + ) dieci = 33 dieci Daniela Fogli Elementi di Informatica e Programmazione 27 Daniela Fogli Elementi di Informatica e Programmazione 28
Conversione decimale binario Conversione decimale binario metodo pratico Usare lo stesso metodo visto prima è complesso! 3 dieci dieci 2 dieci Esempio: 345 dieci = x + x + x = e poi bisogna fare le moltiplicazioni e l elevamento a potenza in base 2 e sommarne i risultati in base 2 Useremo un metodo pratico Dato un numero decimale N, innanzitutto distinguiamo parte intera e la parte frazionaria: N = I.F (ES: dato 56.5 dieci, convertiamo separatamente 56 e.5) Regola pratica per convertire la parte intera Si noti che: c k c k- c k-2 c si può scrivere anche come c k c k- c k-2 c xb+c Ad esempio: 3256 = 325x + 6 (in base b = dieci) 325 = 32x + 5 32 = 3x + 2 3=x + 3 In pratica, per isolare le cifre del numero, basta fare una serie di divisioni per la base e tenere il resto Alla fine, quando il numero è diventato, si leggono i resti dall ultimo al primo e si ottiene di nuovo il numero Daniela Fogli Elementi di Informatica e Programmazione 29 Daniela Fogli Elementi di Informatica e Programmazione 3 Conversione decimale binario metodo pratico Esempio di conversione da decimale a binario Allo stesso modo, per convertire un numero decimale in un numero binario basta fare una sequenza di divisioni (operazione div) per la base 2 e prendere il resto (operazione mod) Esempio: 56 div 2 = 28 & 56 mod 2 = (cifra meno significativa del numero bin) 28 div 2 = 4 & 28 mod 2 = 4 div 2 = 7 & 4 mod 2 = 7 div 2 = 3 & 7 mod 2 = 3 div 2 = & 3 mod 2 = div 2 = & mod 2 = (cifra più significativa del numero bin) 37 dieci =? due 37 div 2 = 68 & 37 mod 2 = 68 div 2 = 34 & 68 mod 2 = 34 div 2 = 7 & 34 mod 2 = 7 div 2 = 8 & 7 mod 2 = 8 div 2 = 4 & 8 mod 2 = 4 div 2 = 2 & 4 mod 2 = 2 div 2 = & 2 mod 2 = div 2 = & mod 2 = Si legge dal basso verso l alto!!! Si ottiene due = 32 dieci + 6 dieci + 8 dieci + + + = 56 dieci Risultato = due Esercizio: riconvertire il risultato in decimale Daniela Fogli Elementi di Informatica e Programmazione 3 Daniela Fogli Elementi di Informatica e Programmazione 32
Errore Tipico () Errore Tipico (2) 8 4 2 E un errore considerare la prima cifra ottenuta come la più significativa 5 2 otterrei che vale 69! 88 44 22 5 2 E un errore fermarsi quando si ottiene come dividendo otterrei (24) anziché (64+24) NB: se si è colti dal dubbio, ragionare: se continuassi il procedimento di divisioni successive aggiungerei zeri; questi non pesano solo se corrispondono alle posizioni più significative ( xyz )! NB: se si è colti dal dubbio, ricordare che la prima cifra significativa in questo caso vale sempre Daniela Fogli Elementi di Informatica e Programmazione 33 Daniela Fogli Elementi di Informatica e Programmazione 34 Regola pratica per convertire la parte frazionaria Conversione da decimale a binario della parte frazionaria F = a - *b - + a -2 *b -2 +... + a -n *b -n (dove b è la base) F * b = a - + a -2 *b - +... + a -n *b -(n-) la parte intera è a - (F*b - a - ) * b = a -2 +... + a -n *b -(n-2) la parte intera è a -2.... Es. con b =, sia F=.53.53 x = 5 +.3 la parte intera è 5.3 x = 3 +. la parte intera è 3. x = la parte intera è Le 3 cifre che costituiscono il numero Ma a noi interessa che la base di arrivo sia la base 2 Basta fare una sequenza di moltiplicazioni per 2 e prendere la parte intera di ciascun prodotto dalla cifra più significativa a quella meno significativa Esempio:.587 dieci binario?.587 x 2 =.74: p.f..74, parte intera (cifra più significativa).74 x 2 =.348: p.f..348, parte intera.348 x 2 =.696: p.f..696, parte intera.696 x 2 =.392: p.f..392, parte intera.392 x 2 =.784: p.f..784, parte intera.784 x 2 =.568: p.f..568, parte intera. Si ottiene. due con 5 cifre binarie dopo la virgola, oppure. due con 6 cifre binarie dopo la virgola, oppure In ogni caso c è un approssimazione Daniela Fogli Elementi di Informatica e Programmazione 35 Daniela Fogli Elementi di Informatica e Programmazione 36
Esempio: convertire 43.687 dieci in binario Operazioni aritmetiche 43.687 x 2 p.i. Operazioni +, -, *, / su numeri in base 2 2.374 x 2 p.i..748 x 2 p.i. Valgono le stesse regole e proprietà delle operazioni in base 5.496 x 2 p.i. 2.992 x 2 p.i..984 43.687 dieci =. due (fermandosi al quinto bit per la parte frazionaria) Daniela Fogli Elementi di Informatica e Programmazione 37 Daniela Fogli Elementi di Informatica e Programmazione 38 Aritmetica binaria: addizione Aritmetica binaria: sottrazione + () Riporto: + = 2 dieci = due Esempio: + 6 = 2 - () Prestito (borrow): 2 2 (= 2 ) = 2 Esempio: 4 = 3 Daniela Fogli Elementi di Informatica e Programmazione 39 Daniela Fogli Elementi di Informatica e Programmazione 4
Aritmetica binaria: moltiplicazione Altri esempi di operazioni aritmetiche in base 2 * Esempio: * 58 = 638 addizione + = sottrazione - = moltiplicazione = + + + + Esercizio: controllare se i risultati sono corretti convertendo in decimale Daniela Fogli Elementi di Informatica e Programmazione 4 Daniela Fogli Elementi di Informatica e Programmazione 42 Numeri in base 8 (ottali) Numeri in base 6 (esadecimali) Le cifre: [,, 2, 3, 4, 5, 6, 7] 7 otto =? dieci otto = dieci 7 otto = 7 dieci 7 otto = ( x 8 + 7 x 8 ) dieci = (8 + 7) dieci = 5 dieci 372 otto =? dieci 372 otto = (3 x 8 2 + 7 x 8 + 2 x 8 ) dieci = (3 x 64 + 56 + 2) dieci = 25 dieci Le cifre: [,, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F] 7D2 sedici =? dieci 7 sedici = 7 dieci D sedici = 3 dieci 2 sedici = 2 dieci 7D2 sedici = (7 x 6 2 + 3 x 6 + 2 x 6 ) dieci = (7 x 256 + 28 + 2) dieci = (792 + 28 + 2) dieci = 22 dieci FA sedici =? dieci F sedici = 5 dieci A sedici = dieci FA sedici = (5 x 6 + x 6 ) dieci = (24 + ) dieci = 25 dieci Daniela Fogli Elementi di Informatica e Programmazione 43 Daniela Fogli Elementi di Informatica e Programmazione 44
I primi 6 numeri in base, 2, 8, e 6 Perché le basi 2, 8 e 6? Sistema di numerazione decimale binario ottale esadecimale 2 2 2 3 3 3 4 4 4 5 5 5 6 6 6 7 7 7 8 8 9 9 2 A 3 B 2 4 C 3 5 D 4 6 E 5 7 F La rappresentazione binaria ha motivazioni di tipo tecnologico Le rappresentazioni ottali ed esadecimali sono utili per rappresentare sinteticamente i valori binari E facile convertire un numero in base 2 in un numero in base 8 o 6 Le cifre binarie si possono raggruppare a 3 a 3 e poi codificare con numeri ottali Le cifre binarie si possono raggruppare a 4 a 4 e poi codificare con numeri esadecimali Daniela Fogli Elementi di Informatica e Programmazione 45 Daniela Fogli Elementi di Informatica e Programmazione 46 Conversione binario ottale Conversione binario esadecimale Tabella di conversione due otto due otto due 2 otto due 3 otto due 4 otto due 5 otto due 6 otto due 7 otto. due = 3 6 6 4. otto Separazione a gruppi di tre cifre binarie a partire dalla meno significativa per la parte intera, e dalla più significativa per la parte frazionaria (dalla virgola!) Nel gruppo più significativo della parte intera si possono aggiungere degli zeri a sinistra, nel meno significativo della frazionaria zeri a destra Tabella di conversione due sedici due sedici due 2 sedici due 3 sedici due 4 sedici due 5 sedici due 6 sedici due 7 sedici due 8 sedici due 9 sedici due A sedici due B sedici due C sedici due D sedici due E sedici due F sedici due = 7 B 4 sedici Si procede nello stesso modo, ma separando le cifre a gruppi di 4 anziché di 3 Daniela Fogli Elementi di Informatica e Programmazione 47 Daniela Fogli Elementi di Informatica e Programmazione 48
Errore Tipico Esecuzione corretta Convertire in notazione ottale il numero binario. L esercizio quindi va risolto così:. 5 6 2. 3 Invece 562.3 8 = 5*64 + 6*8 + 2 + 3/8 = 37.375 che sicuramente non può essere rappresentato con una parte intera di soli 8 bit!!!. 2 7 2. 6 8 PARTIRE SEMPRE DAL PUNTO DI RADICE, EVENTUALMENTE COMPLETANDO LE CIFRE CON DEGLI ZERI PER OTTENERE LE TERNE: xxx xxx. yyy yyy infatti risulta 272.6 8 = 2*64 + 7*8 + 2 + 6/8 = 86.75 e. 2 = 28 + 32 + 6 + 8 + 2 +.5 +.25 = 86.75 Daniela Fogli Elementi di Informatica e Programmazione 49 Daniela Fogli Elementi di Informatica e Programmazione 5 Un altro esempio Esempi di conversione esadecimale-binario Convertire in binario il numero in notazione ottale 35. 8 ). 3 A. 8 6 3 5. 8. 2) E 3. 7 6. ERRORE TIPICO: CONVERTIRE IN. infatti. 8 = /8 =.25 mentre. 2 = /2 =.5 ATTENZIONE!!! PARTIRE SEMPRE DAL PUNTO DI RADICE!!! xxxx. xxxx xxxx Daniela Fogli Elementi di Informatica e Programmazione 5 Daniela Fogli Elementi di Informatica e Programmazione 52
Esercizio (in aula) Esercizio (in aula) Dato il numero binario due convertirlo in un numero ottale e poi in un numero esadecimale Convertire il numero ottale in numero decimale Numero ottale: 267 otto Numero esadecimale: 2B7 6 Numero decimale: 267 otto = (x8 3 + 2x8 2 + 6x8 + 7x8 ) dieci = (52 + 28 + 48 + 7) dieci = 695 dieci Se la base considerata è b = 4, quali sono le cifre utilizzate per comporre i numeri? [,,2,3] Convertire il numero (32) quattro nel corrispondente numero in base 32 quattro = (x4 3 + 3x4 2 + 2x4 + x4 ) dieci = (64 + 48 + 8) dieci = 2 dieci Qual è il numero massimo rappresentabile in base 3 con quattro cifre (espresso in base 3)? 2222 tre Daniela Fogli Elementi di Informatica e Programmazione 53 Daniela Fogli Elementi di Informatica e Programmazione 54 Esercizi. Convertire in formato decimale i seguenti numeri binari:,,,, 2. Convertire in decimale i seguenti numeri frazionari binari :.,.,. 3. Convertire in formato decimale i seguenti numeri ottali: 2, 23, 345, 333.4, 56.27 4. Convertire in formato decimale i seguenti numeri esadecimali: 2.5, DAB, 5D, FFFF, 5A 5. Convertire in binario i seguenti numeri decimali (considerando 6 bit per la parte frazionaria): 45.226, 234.349, 67.72, 83.823 6. Convertire in ottale e in esadecimale i numeri binari ottenuti dalla conversione dei numeri decimali di cui al punto precedente Daniela Fogli Elementi di Informatica e Programmazione 55
Elementi di Informatica e Programmazione La Codifica dell informazione (parte 2) Corsi di Laurea in: Ingegneria Civile Ingegneria per l Ambiente e il Territorio Università degli Studi di Brescia Docente: Daniela Fogli Tipologie di codici Nel seguito vedremo tipologie di rappresentazioni diverse: Senza assumere limitazioni sul numero di bit a disposizione: per numeri [notazione binaria, ovvero posizionale con base 2] Disponendo di un numero di bit limitato: numeri naturali interi relativi [valore assoluto e segno, compl. a, compl. a 2] reali [virgola fissa e virgola mobile] valori logici, caratteri alfabetici, testi suoni, immagini e sequenze video codici per la rilevazione e correzione di errori Codici di compressione (senza con perdita) Daniela Fogli Elementi di Informatica e Programmazione 2 Codifica dei numeri naturali Nota I numeri naturali si rappresentano normalmente, ma con n cifre binarie possiamo rappresentare solo i numeri da a N max Esempio: con 8 cifre (n=8) Con n cifre binarie si possono rappresentare i numeri da a 2 n - Esempio precedente n = 8 N max = 2 n - = 256- =255 27 N max = 255 Daniela Fogli Elementi di Informatica e Programmazione 3 Daniela Fogli Elementi di Informatica e Programmazione 4
Viceversa In generale Voglio rappresentare i numeri naturali da a N max. Di quante cifre binarie ho bisogno? Esempio Voglio rappresentare numeri da a 35 con n = 7 N max = 27 con n = 8 N max = 255 con n = 9 N max = 5 n = 9 Per poter rappresentare numeri naturali fino a N, serve un numero di cifre n tali che: N max N ovvero (2 n ) N Quindi deve essere Esempio precedente N = 35 n log 2 (N + ) n log 2 (35) = 8,. quindi n 9 Daniela Fogli Elementi di Informatica e Programmazione 5 Daniela Fogli Elementi di Informatica e Programmazione 6 Operazioni aritmetiche Tipologie di codici Nel caso di addizione, ho traboccamento (overflow) quando ho un riporto dal bit più significativo che non può essere rappresentato con le cifre a disposizione + 4 = 2 ()? Nel caso di sottrazione, un prestito dal bit più significativo indica un risultato negativo (non rappresentabile) 2 = 3 () 5? Nel seguito vedremo tipologie di rappresentazioni diverse: Senza assumere limitazioni sul numero di bit a disposizione: per numeri [notazione binaria, ovvero posizionale con base 2] Disponendo di un numero di bit limitato: numeri naturali interi relativi [valore assoluto e segno, compl. a, compl. a 2] reali [virgola fissa e virgola mobile] valori logici, caratteri alfabetici, testi suoni, immagini e sequenze video codici per la rilevazione e correzione di errori Codici di compressione (senza con perdita) Daniela Fogli Elementi di Informatica e Programmazione 7 Daniela Fogli Elementi di Informatica e Programmazione 8
Codifica in valore assoluto e segno Codifica in valore assoluto e segno con 4 bit Il modo più semplice: indicare il segno seguito dal valore assoluto Se i bit disponibili per la codifica sono n si utilizza il primo bit della sequenza per indicare il segno ( per positivo e per negativo), e i restanti bit rappresentano il valore assoluto del numero Esempio: n = 8 (8 bit a disposizione) Rappresentazione di - segno - Numeri positivi + + +2 +3 +4 +5 +6 +7 Numeri negativi - - -2-3 -4-5 -6-7 Daniela Fogli Elementi di Informatica e Programmazione 9 Daniela Fogli Elementi di Informatica e Programmazione Due note importanti Che problemi ha questa codifica? Esistono due codifiche per il valore + - I valori rappresentabili vanno: da - (2 n- - ) a + (2 n- - ) segno * * * * * * * n- bit: da a 2 n- - Questa tecnica non viene usata nel calcolatore Difficoltà nel fare le operazioni aritmetiche (es. la sottrazione) Es. (sottrazione di numeri entrambi positivi) a: b: - Dato che b > a, il segno del risultato è negativo, il valore assoluto è a-b: - = b a 27 43-6 Daniela Fogli Elementi di Informatica e Programmazione Daniela Fogli Elementi di Informatica e Programmazione 2
Un altro esempio In generale Es. 2: Sottrazione di numeri entrambi positivi ma con a > b a: b: - Dato che a > b, il segno del risultato è positivo, il valore assoluto è - a = b 59 43 Segno a Segno b segno(a-b) a-b + + a > b + a - b + + b > a - b - a - + - a + b + - + a + b - - a > b - a - b - - b > a + b - a Per il calcolatore le operazioni di somma e sottrazione sono complesse Si vuole una rappresentazione per la quale esista un unico semplice metodo per l addizione e la sottrazione a-b: +6 Daniela Fogli Elementi di Informatica e Programmazione 3 Daniela Fogli Elementi di Informatica e Programmazione 4 Codifica in complemento a Esempi Si ottiene facendo il complemento di tutti i bit (ovvero si sostituiscono gli con e gli con ) Es.: 5 dieci = due e 5 dieci = due Il bit più significativo indica se positivo o negativo I numeri positivi si rappresentano come nella rappresentazione in valore assoluto e segno I numeri negativi si rappresentano come complemento a del numero positivo corrispondente Ad esempio: n = 8 +2 dieci = due 2 dieci = due Anche questa volta il numero dieci ha due rappresentazioni: e Esercizio: n = 8 +36 dieci = due - 36 dieci =???????? due Daniela Fogli Elementi di Informatica e Programmazione 5 Daniela Fogli Elementi di Informatica e Programmazione 6
Operazioni aritmetiche Codifica in complemento a 2 La somma si ottiene facendo la somma degli addendi e poi sommando l eventuale riporto Esempi: + -99 dieci + -99 dieci = -28 dieci = -54 dieci () + () + = = -27 dieci +2 dieci Risultato OK Risultato ERRATO! (overflow) Sia n è il numero di bit utilizzati per la codifica I numeri positivi sono rappresentati normalmente (rappresentazione binaria dei numeri positivi) con il bit più significativo pari a I numeri negativi si ottengono come complemento a due del numero positivo x corrispondente, ovvero come 2 n x, e il bit più significativo è pari a Esempi (con n = 4): +6 dieci = (rappresentato normalmente) - 6 dieci 2 4-6 = -6 dieci = c2 +3 dieci (rappresentato normalmente) - 3 dieci 2 4-3 = 3-3 dieci = c2 E complicato? Somma più semplice ma con il problema di sommare il riporto Daniela Fogli Elementi di Informatica e Programmazione 7 Daniela Fogli Elementi di Informatica e Programmazione 8 Codifica in complemento a 2 con n=4 bit Due metodi pratici Bit di segno Numeri positivi 2 3 4 5 6 7 Bit di segno Numeri negativi -8-7 -6-5 -4-3 -2 - Unica rappresentazione del numero zero Esistono due metodi pratici equivalenti per calcolare il complemento a due di un numero x Metodo :. Effettuare il complemento a di x 2. Aggiungere Metodo 2:. Partendo da destra e andando verso sinistra, lasciare invariati tutti i bit fino al primo compreso 2. Complementare (invertire) tutti i bit successivi al primo NB: i numeri rappresentabili vanno da -2 n- (-8) a +(2 n- -) (+7) NB: il Metodo è quello utilizzato nei dispositivi elettronici Daniela Fogli Elementi di Informatica e Programmazione 9 Daniela Fogli Elementi di Informatica e Programmazione 2
Esempio di uso del metodo Esempio di uso dell algoritmo 2 Dato +6 dieci codificato su 4 bit Dato +6 dieci codificato su 4 bit Facendo il complemento a si ottiene Sommando al risultato si ottiene + = rimane invariato rimane invariato viene invertito viene invertito Risultato Daniela Fogli Elementi di Informatica e Programmazione 2 Daniela Fogli Elementi di Informatica e Programmazione 22 Altro esempio Errore Tipico A partire dalla codifica binaria di 5 dieci troviamo la codifica binaria di 5 dieci 5 dieci = nota 5 bit! Usando il primo metodo: complemento Aggiungo a Usando il secondo metodo: lascio invariato il primo a destra e complemento tutti gli altri ERRORE TIPICO: dimenticarsi che la rappresentazione in C.a 2 è relativa ad un numero di bit fissati!!! Es. Rappresentare in C. a 2 con 8 bit il numero decimale 3. 3 dieci = due quindi 3 dieci = due ma questo risulta un numero positivo!!! Svolgimento corretto: 3 dieci = due -3 dieci = Daniela Fogli Elementi di Informatica e Programmazione 23 Daniela Fogli Elementi di Informatica e Programmazione 24
Una visione globale Intervalli di rappresentazione: esempio Con n cifre si possono rappresentare 2 n numeri. Metà per i positivi e metà per i negativi, come in figura Rapp."normale +2 + +2 n- - 2 n- (2 n- -) 2 3 C. A 2: 2 n - N Numeri positivi Numeri negativi NB: i numeri rappresentabili vanno da -2 n- a +(2 n- -) Supponiamo di avere una codifica con n=6 bit Rappresentazione in valore assoluto e segno: numeri compresi fra (2 5 -) e 2 5 -, ovvero fra 32767 e +32767 lo ha due rappresentazioni Rappresentazione in complemento a : numeri compresi fra (2 5 - ) e 2 5 -, ovvero fra 32767 e +32767 lo ha due rappresentazioni Rappresentazione in complemento a 2: numeri compresi fra 2 5 e 2 5 -, ovvero fra 32768 e +32767 lo ha una sola rappresentazione (in pratica, però, tipicamente si utilizzano i valori fra 32767 e +32767 per simmetria, così dato un qualsiasi numero anche il suo opposto è rappresentabile) Daniela Fogli Elementi di Informatica e Programmazione 25 Daniela Fogli Elementi di Informatica e Programmazione 26 Conversione da numero binario in complemento a 2 a numero decimale Altri esempi Si può usare la simmetria dell operazione in compl. a 2 Esempio: due è un numero negativo, pari a = -63 dieci Oppure si può usare la seguente regola: il valore di un numero c k c k- c c rappresentato in complemento a due è dato dalla seguente espressione -c k x2 k + c k- x2 k- + + c x2 + c x2 = -x2 4 + x2 = -6 + = -5 dieci = -x2 3 + x2 = -8 + 2 = -6 dieci = -x2 7 + x2 5 + x2 3 + x2 = -28 + 32 + 8 + 2 = -86 Esercizio proposto: ricavare il valore decimale col metodo della simmetria Esempio: due = (-)x2 6 + x2 = - 64 + = - 63 dieci Daniela Fogli Elementi di Informatica e Programmazione 27 Daniela Fogli Elementi di Informatica e Programmazione 28
Perché il complemento a 2? Estensione del segno I calcolatori usano la rappresentazione in complemento a 2 si semplificano i circuiti che svolgono le operazioni aritmetiche in particolare la somma si effettua semplicemente come nel caso di numeri naturali, inoltre somma e sottrazione possono essere realizzate con un unico circuito: infatti: x - y = x + (-y) Estendiamo il segno per rappresentare un numero su n=k + d bit anziché su n=k bit -8 su n = 4 bit -8 su n = 8 bit Daniela Fogli Elementi di Informatica e Programmazione 29 Daniela Fogli Elementi di Informatica e Programmazione 3 Somma di numeri in complemento a 2 Esempio di addizione L addizione di due numeri rappresentati in complemento a 2 dà un risultato corretto, trascurando il riporto, a patto che il risultato sia compreso entro l intervallo dei numeri rappresentabili n = 8 bit, posso rappresentare i numeri da 2 7 a +2 7 - (+5) (+8) (+3) (+5) (-8) (-3) Usando n = 6 bit, l intervallo dei numeri rappresentabili va da 2 5 a +2 5 -, ovvero da 32 a +3 Vogliamo calcolare 26-3 26 3 = 26 + (-3) = +3 + 26 = -3 +3 Il riporto viene trascurato (3 = ) È nell intervallo dei numeri rappresentabili Daniela Fogli Elementi di Informatica e Programmazione 3 Daniela Fogli Elementi di Informatica e Programmazione 32
Overflow Esempio di overflow Bit di segno La somma di due numeri interi positivi o di due numeri interi negativi può dar luogo ad un intero non rappresentabile con i bit a disposizione Questo dà luogo a ciò che si chiama overflow (traboccamento) In caso di overflow, il risultato di un operazione non è valido Esempio: supponiamo di avere a disposizione 8 bit per rappresentare gli interi ( bit per il segno e 7 bit per il valore) Sommiamo a (+27) il numero (+) otteniamo un numero negativo (-28) invece di +28 + = Il risultato ha segno negativo nonostante gli addendi siano entrambi positivi +27 + -28 Daniela Fogli Elementi di Informatica e Programmazione 33 Daniela Fogli Elementi di Informatica e Programmazione 34 Regola per la determinazione dell overflow Se gli addendi hanno segno discorde non si ha mai overflow: MAX (+) MIN (-) N N2 Se gli addendi hanno segno concorde si ha overflow se il segno del risultato è diverso dal segno dei due addendi: + e +: deve risultare +, altrimenti overflow! e : deve risultare, altrimenti overflow! Somma compresa tra N (positivo) ed N2 (negativo), quindi sicuramente rappresentabile! Regola equivalente per l overflow Con una rappresentazione su n bit, si ha overflow se i riporti generati nelle due posizioni più significative (n- e n-2 in figura) sono diversi n- n-2 (ovvero: se c è riporto generato in una posizione ma non nell altra) Daniela Fogli Elementi di Informatica e Programmazione 35 Daniela Fogli Elementi di Informatica e Programmazione 36
Esempio di overflow Esempio di non overflow Usando n = 6 bit, l intervallo dei numeri rappresentabili va da 2 5 a +2 5 -, ovvero da 32 a +3 Vogliamo calcolare -25-3 -25-3 = -25 + (-3) = -38 non è compreso nell intervallo + -25 = -3 +26 Generato un riporto solo nella posizione più significativa (25 = ) (3 = ) Daniela Fogli Elementi di Informatica e Programmazione 37 25-3 = 25 + (-3) = 2 è compreso nell intervallo + 25 = -3 +2 Generato un riporto in entrambe le posizioni più significative (3 = ) Daniela Fogli Elementi di Informatica e Programmazione 38 Esercizio d esame () Rappresentare i numeri 5 e 98 (in base ) in notazione binaria in complemento a due con 8 bit. Eseguire la somma algebrica dei numeri così ottenuti e commentare il risultato. [3 punti] Soluzione Conversione nella notazione binaria dei numeri (valori assoluti) 5 = 2 98 = 2 (32 + 6 + 2 + ) (64 + 32 + 2) Rappresentazione in complemento a due: -5 = -98 = Daniela Fogli Elementi di Informatica e Programmazione 39 Somma algebrica: + = Soluzione (cont.) Commento (= dire se c è overflow e spiegare perché nel dettaglio): - riporto generato in posizione 6: NO - riporto generato in posizione 7: SI Poiché i riporti generati nei bit di posizione 6 e 7 sono diversi ho un caso di overflow NB: la cosa è evidente anche dal fatto che dalla somma di due numeri negativi ottengo un numero positivo. In effetti con 8 bit posso esprimere in complemento a due i numeri da 28 a +27 [nella pratica da 27 a + 27], mentre si ha 5 98 = 49. ERRORE TIPICO: Dire che c è overflow perché i bit del risultato di posiz. più significativa sono diversi. In questo caso è vero, ma non c entra nulla con l overflow! Daniela Fogli Elementi di Informatica e Programmazione 4
Esercizio d esame (2) Soluzione (cont.) Rappresentare i numeri 54 e 44 (in base ) in notazione binaria in complemento a due con 8 bit. Eseguire la somma algebrica dei numeri così ottenuti e commentare il risultato. [3 punti] Soluzione Conversione nella notazione binaria dei numeri (valori assoluti) 54 = 2 44 = 2 (32+6+4+2) (32+8+4) Rappresentazione in complemento a due dei numeri (con 8 bit) -54 = -44 = Somma algebrica: + = e quindi il risultato è. Commento: Non c è overflow perché i riporti generati nelle posizioni 6 e 7 sono uguali ( e ). In effetti risulta un numero negativo pari a due = (64+32+2) = 98 dieci, che è proprio 54 44 Daniela Fogli Elementi di Informatica e Programmazione 4 Daniela Fogli Elementi di Informatica e Programmazione 42 Dimenticarsi del numero di bit (8): 54 = 2-54 = 44 = 2-44 = e sommando: + = Un possibile errore risultato che non ha alcun senso!!! (NB: in questo caso l esercizio è valutato punti!) Esercizio d esame (3) Rappresentare i numeri 96 e 69 (in base ) in notazione binaria in complemento a due con 8 bit. Eseguire la somma algebrica dei numeri così ottenuti e commentare il risultato. [3 punti] Soluzione Rappresentazione in complemento a due con 8 bit: 96 = 69 = Somma algebrica: + = Daniela Fogli Elementi di Informatica e Programmazione 43 Daniela Fogli Elementi di Informatica e Programmazione 44
Soluzione (cont.) Esercizi Commento: Ho overflow perchè i riporti sono diversi (ho soltanto il riporto nel bit 7), cosa deducibile anche dal fatto che il risultato ha il bit di segno pari a (rappresenta un numero negativo ottenuto dalla somma di due positivi!). ERRORE TIPICO: complementare i due numeri che in realtà sono positivi Dati i seguenti numeri decimali interi positivi: 55, 2, 6, 42 Rappresentarli come numeri binari su 8 bit Determinare i numeri negativi corrispondenti in binario con le seguenti rappresentazioni: Valore assoluto e segno In complemento a In complemento a 2 Daniela Fogli Elementi di Informatica e Programmazione 45 Daniela Fogli Elementi di Informatica e Programmazione 46 Esercizi Fare la somma dei numeri binari in complemento a 2 codificati su n = 8 bit che corrispondono ai numeri 6 dieci e 42 dieci Fare la somma dei numeri binari in complemento a 2 codificati su n = 6 bit che corrispondono ai numeri 5 dieci e 28 dieci Daniela Fogli Elementi di Informatica e Programmazione 47
Elementi di Informatica e Programmazione La Codifica dell informazione (parte 3) Corsi di Laurea in: Ingegneria Civile Ingegneria per l Ambiente e il Territorio Università degli Studi di Brescia Docente: Daniela Fogli Tipologie di codici Nel seguito vedremo tipologie di rappresentazioni diverse: Senza assumere limitazioni sul numero di bit a disposizione: per numeri [notazione binaria, ovvero posizionale con base 2] Disponendo di un numero di bit limitato: numeri naturali interi relativi [valore assoluto e segno, compl. a, compl. a 2] reali [virgola fissa e virgola mobile] valori logici, caratteri alfabetici, testi suoni, immagini e sequenze video codici per la rilevazione e correzione di errori Codici di compressione (senza con perdita) Daniela Fogli Elementi di Informatica e Programmazione 2 Rappresentazione dei numeri reali Formato Per rappresentare numeri come /3 =.33333333333. π = 3.4592653 2 =.44235 servirebbe un numero di cifre illimitato Nel calcolatore è possibile usare solo successioni di bit di lunghezza finita Necessaria approssimazione 2 modalità Rappresentazione in virgola fissa (non usata nei calcolatori) Rappresentazione in virgola mobile In entrambi i casi, una rappresentazione è definita mediante un formato Il numero n di bit a disposizione I campi in cui sono suddivisi i bit Quanti In che ordine Quanti bit per ciascun campo Cosa rappresenta ciascun campo Esempio di formato a 32 bit S E M Vedremo poi il significato 8 23 Daniela Fogli Elementi di Informatica e Programmazione 3 Daniela Fogli Elementi di Informatica e Programmazione 4
Rappresentazione in virgola fissa Altro esempio Abbiamo n bit a disposizione (e vogliamo rappresentare numeri reali): - un campo del formato rappresenta la parte intera - un campo del formato rappresenta la parte frazionaria Esempio: n = 24 bit (3 byte) Parte intera Parte decimale 2 byte (6 bit) byte (8 bit) Il numero più piccolo rappresentabile maggiore di è: (2-8 ) Esempio: n = 32 bit 3 Parte intera 6 bit 6 5 Parte frazionaria 6 bit Es. 3.25 dieci sarebbe rappresentato così Valore massimo rappresentabile in questo formato?. 6 bit 6 bit Daniela Fogli Elementi di Informatica e Programmazione 5 Daniela Fogli Elementi di Informatica e Programmazione 6 Intervallo di rappresentazione: esempio Intervallo di rappresentazione: in generale Nel formato precedente a 32 bit - Parte intera: 2 6 = 65535 - Parte frazionaria:. +. =. 2-6 - 2-6 =.999984742 circa N MAX = 65535.999984742 circa 65536 Numero massimo rappresentabile N MAX ni bit Max parte intera: 2 ni - Max parte frazionaria: - 2 -nf nf bit se nf grande, - 2 -nf pari a circa N MAX = (2 ni -) + ( - 2 -nf ) se nf grande, N MAX pari a circa 2 ni Daniela Fogli Elementi di Informatica e Programmazione 7 Daniela Fogli Elementi di Informatica e Programmazione 8
Granularità Un inconveniente Qual è la precisione della rappresentazione in virgola fissa? Granularità: differenza tra un numero e il successivo rappresentabile quanto più è piccola, tanto più precisa è la rappresentazione! Dato un numero, rappresentato, qual è il successivo? Es.. In generale: la granularità è fissa e pari a 2 -nf Per un qualsiasi numero rappresentabile I, il successivo è I + 2 -nf Con la rappresentazione precedente, vogliamo rappresentare un numero grande, ad esempio 6. Molto meglio un campo più grande per la parte intera! Vogliamo rappresentare un numero piccolo, ad esempio 2-5 a cosa mi servono questi? a cosa mi servono questi? Molto meglio un campo più grande per la parte frazionaria! Daniela Fogli Elementi di Informatica e Programmazione 9 Daniela Fogli Elementi di Informatica e Programmazione Alcuni esempi pratici Notazione scientifica Massa dell elettrone: 9 x -28 grammi.9 Massa del sole: 2 x 33 grammi 2. Potrei rappresentare tutti i numeri con 34 cifre a sinistra della virgola e 28 cifre a destra, ma in questo modo spreco le cifre disponibili! Si vuole un sistema di rappresentazione in cui l intervallo dei numeri esprimibili sia indipendente dal numero di cifre significative Ovvero un sistema in cui la granularità dipende dal numero rappresentato: si estende così l intervallo dei numeri rappresentabili Per semplicità, vediamola prima in base Un numero in base viene rappresentato come m x exp base mantissa esponente Esempio: 59 3 = +.593 x 8 dove m=+.593 ed e=8 Esempio: -.593 = -.593 x -5 dove m= -.593 ed e=-5 Daniela Fogli Elementi di Informatica e Programmazione Daniela Fogli Elementi di Informatica e Programmazione 2
Notazione scientifica per numeri binari Il numero due può essere rappresentato come. x 2 8 esponente mantissa base Altri esempi: un numero molto grande come. diventa *2 29 un numero molto piccolo come. diventa.*2-36 Nel calcolatore: Rappresentazione in virgola mobile Virgola mobile o Floating point Dato un numero da rappresentare N: N = ±mant*2 esp FORMATO Esempio di formato: Si memorizzano segno, mantissa ed esponente s M mant esp n M bit n E bit Daniela Fogli Elementi di Informatica e Programmazione 3 Daniela Fogli Elementi di Informatica e Programmazione 4 Problema Standard IEEE 754 N = ±mant*2 esp In questo modo la rappresentazione non è univoca:. due = * 2 - mant = esp = - = * 2-2 mant = esp = -2 =. * 2 mant =. esp = si stabilisce la forma normalizzata della mantissa Necessità di uniformare la precisione del calcolo (calcolatori di produttori diversi con strutture differenti) Lo standard IEEE * 754 stabilisce la lunghezza di mantissa ed esponente 32 bit per i numeri in precisione singola 8 23 64 bit per i numeri in precisione doppia 52 bit segno, 8 bit esponente, 23 bit mantissa bit segno, bit esponente, 52 bit mantissa * Institute of Electrical and Electronic Engineering Daniela Fogli Elementi di Informatica e Programmazione 5 Daniela Fogli Elementi di Informatica e Programmazione 6
IEEE 754 Singola Precisione Nota sulla rappresentazione dell esponente S E M 8 23 Segno S: segno + segno - Esempio: num= -3.5 Segno: 255 Numeri positivi Normalizzazione e mantissa +28 27 N =.xxxxxxxxx 23 bit (M) * 2 esp hidden bit Rappresentazione dell esponente E = esp + 27 Rappresentazione in 8 bit a eccesso 27, con le configurazioni e non ammesse (-26 esp 27) num =. =. * 2 M = E = +27 = 28 = -27 +27 Numeri negativi Daniela Fogli Elementi di Informatica e Programmazione 7 Daniela Fogli Elementi di Informatica e Programmazione 8 Esercizio d esame () Esercizio d esame (2) Se il campo esponente di una codifica contiene il numero qual è il valore decimale dell esponente? [2 punti] Soluzione E = esp + 27 valori rappresentabili da 27 a +28 (NB: gli estremi non sono utilizzati propriamente) Nel caso specifico: E = 59 quindi esp = 59-27 = -68 Ricavare il valore decimale del seguente numero in virgola mobile rappresentato secondo lo standard IEEE 754 a 32 bit: [3 punti] Soluzione Segno: + Esponente: E = 2 7 = 28 esp = 28-27 = Mantissa: mant =. N =. due * 2 = due = 3 dieci Daniela Fogli Elementi di Informatica e Programmazione 9 Daniela Fogli Elementi di Informatica e Programmazione 2
Esercizio d esame (3) Normalizzazione Rappresentare il numero decimale 4.5 secondo lo standard in virgola mobile IEEE 754 a 32 bit. [3 punti] Soluzione Segno: Rapp. binaria: 4.5 dieci =. due Forma normalizzata: N =. * 2 2 Esponente: esp = 2 E = 2+27 = 29 dieci = IEEE754: PASSAGGIO IMPORTANTE: normalizzazione ESEMPIO Rappresentazione binaria:. =. * 2 3 (forma normalizzata) ESEMPIO 2 Rappresentazione binaria:. =. * 2-3 (forma normalizzata) Daniela Fogli Elementi di Informatica e Programmazione 2 Daniela Fogli Elementi di Informatica e Programmazione 22 L insieme dei numeri in virgola mobile non coincide con R Esempio: IEEE 754 con singola precisione L insieme dei numeri reali è denso e illimitato MinExp = -26 MaxExp = +27 [estremi per scopi speciali] L insieme dei numeri in virgola mobile non è denso ed è limitato tra un numero reale massimo ed uno minimo esprimibili L aritmetica reale del calcolatore è diversa da quella classica Numero più grande normalizzato: ±. 2 * 2 27 2*2 27 = 2 28 Numero più piccolo normalizzato: ±. 2 * 2-26 = 2-26 OVERFLOW - NORMALIZZATI - DENORM.- UNDERF. DENORM.+ NORMALIZZATI + OVERFLOW + - -2 28-2 -26-2 -49 2-49 2-26 2 28 + NB: nel caso della virgola fissa, l intervallo dei valori rappresentabili sarebbe molto più limitato. Es: - anche se dedicassimo tutti i 32 bit alla parte intera, max 2 32 - anche se dedicassimo tutti i 32 bit alla parte fraz, min 2-32 Daniela Fogli Elementi di Informatica e Programmazione 23 Daniela Fogli Elementi di Informatica e Programmazione 24
E lo zero??? I problemi che nascono dalla natura digitale del calcolatore In generale lo zero non si potrebbe rappresentare perché la mantissa è sempre.m Si usa un valore speciale dell esponente (E = ) e si pone la mantissa a. questa rappresentazione significa Altri casi particolari di E (E= oppure E=255) per rappresentare ±, risultati di operazioni non valide, numeri denormalizzati I numeri nelle regioni (-, -2 28 ), (-2-26, ), (, 2-26 ), (2 28, + ) non possono essere rappresentati Determiniamo quanti numeri possono essere rappresentati la mantissa varia da m =... a... (2 23 numeri) l esponente varia da e = -26 a + 27 (254 ordini di grandezza) in totale: 2 23 x 254 numeri positivi, 2 23 x 254 numeri negativi, e lo zero 4.26.42.865 numeri I due intervalli di numeri positivi e negativi esprimibili non formano insiemi continui: i numeri non sono cioè uniformemente distribuiti (più radi per valori elevati dell esponente e più fitti per valori piccoli dell esponente si infittiscono nei pressi dello zero) Daniela Fogli Elementi di Informatica e Programmazione 25 Daniela Fogli Elementi di Informatica e Programmazione 26 Esempio Operazioni sui numeri reali La separazione fra... x 2 99 e... x 2 99 (ovvero, 2-23+99 = 2 76 ) è molto maggiore di quella fra... x 2 e... x 2 (ovvero, 2-23 ) OVERFLOW - NORMALIZZATI - NORMALIZZATI + OVERFLOW + - -2 28-2 -26 2-26 2 28 +...... x 2 99 Addizione e sottrazione: si trasformano (con eventuale perdita di precisione) gli addendi in una rappresentazione con uguale esponente (il maggiore) si sommano (sottraggono) le mantisse si normalizza se necessario Moltiplicazione: si sommano gli esponenti si moltiplicano le mantisse si normalizza se necessario Divisione: si sottraggono gli esponenti si dividono le mantisse si normalizza se necessario La precisione è concentrata dove ce n è bisogno! Daniela Fogli Elementi di Informatica e Programmazione 27 Daniela Fogli Elementi di Informatica e Programmazione 28
Esempio di addizione Problemi con le operazioni Somma tra i seguenti due numeri rappresentati IEEE 754: e E = 23 ( 27 = -4) E = 25 ( 27 = -2) Porto l esponente del primo operando a -2: Nota: perdo le 2. x 2-4 =. x 2-2 cifre meno significative della Sommo le mantisse: mantissa. +. =. [ x 2-2 ] [ x 2-2 ] [ x 2-2 ] NB: risultato già normalizzato! Addizioni e sottrazioni possono dare luogo a errori Esempio: sottrazione fra due numeri quasi uguali può dar luogo al fenomeno della cancellazione (risultato = ) Divisione per numeri molto piccoli il risultato può cadere nell intervallo di overflow (+ o -) Risulta quindi NB: le cose sono leggermente più complicate, ma l idea è questa Daniela Fogli Elementi di Informatica e Programmazione 29 Daniela Fogli Elementi di Informatica e Programmazione 3 Fenomeno della cancellazione: esempio Esercizi Se ho la sottrazione. x 2-26 -. x 2-26 =. x 2-26 che normalizzato diventerebbe. x 2-29 che viene dunque approssimato con, perché il minimo esponente esprimibile è -26 Esprimere i numeri decimali 45.25, -234.875, 67.75, -83.825 in codifica binaria secondo lo standard IEEE 754 (in singola precisione a 32 bit) Ricavare il valore decimale dei seguenti numeri in virgola mobile rappresentati secondo lo standard IEEE 754 a 32 bit: NB: in realtà, è possibile esprimere numeri denormalizzati prossimi allo, fino a 2-49, ma noi non ce ne occupiamo (vedere libro per gli interessati) Daniela Fogli Elementi di Informatica e Programmazione 3 Daniela Fogli Elementi di Informatica e Programmazione 32
Tipologie di codici Codifica binaria di valori logici Nel seguito vedremo tipologie di rappresentazioni diverse: Senza assumere limitazioni sul numero di bit a disposizione: per numeri [notazione binaria, ovvero posizionale con base 2] Disponendo di un numero di bit limitato: numeri naturali interi relativi [valore assoluto e segno, compl. a, compl. a 2] reali [virgola fissa e virgola mobile] valori logici, caratteri alfabetici, testi suoni, immagini e sequenze video codici per la rilevazione e correzione di errori Codici di compressione (senza con perdita) Valore logico: esprime il valore di verità di un determinato fatto Esempi - Il voto del mio compito di informatica A è sufficiente (F) - Una squadra di pallavolo in campo è costituita da 6 giocatori (F2) Il fatto F è vero oppure falso, non entrambi (lo stesso per F2) Daniela Fogli Elementi di Informatica e Programmazione 33 Daniela Fogli Elementi di Informatica e Programmazione 34 Algebra di Boole Variabili booleane E un particolare tipo di algebra che include: un insieme di supporto A (l insieme {,} o {V,F} nel ns caso) degli operatori binari: AND () e OR (+) un operatore complemento: NOT ( ) Gli operatori soddisfano certe proprietà che si deducono da un insieme di assiomi Una variabile booleana è una variabile binaria che può assumere uno dei due valori logici denotati con e (oppure Falso e Vero) Usiamo ad esempio i simboli x, y, z, per indicare variabili booleane Può essere x = oppure x = E lo strumento matematico su cui si fonda il funzionamento dei circuiti digitali Daniela Fogli Elementi di Informatica e Programmazione 35 Daniela Fogli Elementi di Informatica e Programmazione 36
Operatori booleani e Tabelle di Verità Assiomi dell Algebra di Boole Operatori booleani (o logici) fondamentali: NOT Negazione Logica not(x), x, ~x AND Prodotto Logico x and y, x y, xy OR Somma Logica x or y, x + y Forma AND Forma OR Commutatività AB = BA A+B = B+A x x x x x x x + x x x NOT Distributività A+BC=(A+B)(A+C) A(B+C)=AB+AC Identità A = A +A = A Inverso AĀ = A+Ā = AND OR Daniela Fogli Elementi di Informatica e Programmazione 37 Daniela Fogli Elementi di Informatica e Programmazione 38 Proprietà dell Algebra di Boole Forma AND Forma OR Elemento nullo A = +A = Idempotenza AA = A A+A = A Assorbimento A(A+B) = A A+AB=A Associatività (AB)C=A(BC) (A+B)+C=A+(B+C) De Morgan AB = A+B A+B = A B Altre proprietà della negazione logica: Formule (espressioni) booleane (logiche). Le costanti e e le variabili (simboli a cui possono essere associati i valori e ) sono formule booleane 2. Se E, E ed E 2 sono formule booleane lo sono anche (E +E 2 ), (E E 2 ) e (E) 3. Non esistono altre formule oltre a quelle che possono essere generate da un numero finito di applicazioni delle regole e 2 = = Daniela Fogli Elementi di Informatica e Programmazione 39 Daniela Fogli Elementi di Informatica e Programmazione 4
Esempi di formule booleane Equivalenza fra formule booleane Esempi ((x+y)z) ((x x 2 )+(x 3 (x 4 +x 5 ))) Valgono le regole classiche di semplificazione delle parentesi e di priorità degli operatori: ((x x 2 )+(x 3 (x 4 +x 5 ))) x x 2 +x 3 (x 4 +x 5 ) e il simbolo di solito si omette x x 2 + x x 2 x 3 = x (x 2 +x 2 x 3 ) x + x 2 + x 2 x 3 + x 2 x 3 = x + x 2 + x 3 (x 2 +x 2 ) = x + x 2 + x 3 x x 2 + x x 2 x 3 + x x 2 = x x 2 + x x 2 x 3 = x x 2 ( +x 3 ) = x x 2 Equivalenza di formule booleane: per ogni combinazione di valori delle variabili le formule restituiscono lo stesso valore Daniela Fogli Elementi di Informatica e Programmazione 4 Daniela Fogli Elementi di Informatica e Programmazione 42 Equivalenza fra formule booleane Verifica tramite tabella Tabelle di verità e proprietà dell Algebra di Boole: Esempio x + x 2 + x 2 x 3 + x 2 x 3 = x + x 2 + x 3 Assorbimento: x(x+y) = x x 3 x 2 x x 2 x 2 x 3 x 2 x 3 x +x 2 +x 2 x 3 +x 2 x 3 x +x 2 +x 3 x y x+y x(x+y) Daniela Fogli Elementi di Informatica e Programmazione 43 Daniela Fogli Elementi di Informatica e Programmazione 44
Tabelle di verità e proprietà dell Algebra di Boole: Esempio (2) NB: si può usare anche una diversa simbologia per i valori Tabelle di verità e proprietà dell Algebra di Boole: Esempio (3) o per gli operatori Assorbimento: x(x +y) = x x y x+y x(x+y) F F F F F V V F V F V V V V V V Assorbimento: x AND (x OR y) = x x y x OR y x AND (x OR y) F F F F F V V F V F V V V V V V Daniela Fogli Elementi di Informatica e Programmazione 45 Daniela Fogli Elementi di Informatica e Programmazione 46 Tabelle di verità e proprietà dell Algebra di Boole: Esempio Esercizi Proprietà di De Morgan: x y = x + y x y xy xy x y x + y Costruire le tabelle di verità delle seguenti formule booleane:. (x + y) + (xy) che è equivalente a scrivere (x OR y) OR NOT(x AND y) 2. ((x + z) + y) + (xz) che è equivalente a scrivere NOT ((x OR z) OR y) OR (x AND z) Usando gli assiomi e le proprietà dell algebra di Boole dimostrare le seguenti equivalenze di formule booleane:. xyz + xyz + xyz + x = x 2. x y + x y + x y = x + y Daniela Fogli Elementi di Informatica e Programmazione 47 Daniela Fogli Elementi di Informatica e Programmazione 48
Tipologie di codici Codifica binaria dei caratteri Nel seguito vedremo tipologie di rappresentazioni diverse: Senza assumere limitazioni sul numero di bit a disposizione: per numeri [notazione binaria, ovvero posizionale con base 2] Disponendo di un numero di bit limitato: numeri naturali interi relativi [valore assoluto e segno, compl. a, compl. a 2] reali [virgola fissa e virgola mobile] valori logici, caratteri alfabetici, testi suoni, immagini e sequenze video codici per la rilevazione e correzione di errori Codici di compressione (senza con perdita) Quanti oggetti? cifre 26 lettere minuscole + 26 lettere maiuscole = 52 ~3 segni di interpunzione ~3 caratteri di controllo (LF, CR, EOF, ) ~2 oggetti k = log 2 2 = 7 (sufficienti 7 bit) Il codice ASCII utilizza 7 bit e quindi può rappresentare al massimo n = 2 7 = 28 caratteri Codice ASCII esteso: utilizza 8 bit e quindi codifica 256 caratteri Codice UNICODE: utilizza 6 bit e quindi codifica 65536 caratteri (anche quelli delle lingue orientali non tutti! Sono circa 2! e aumentano!) Estensione a 2 bit del codice UNICODE Daniela Fogli Elementi di Informatica e Programmazione 49 Daniela Fogli Elementi di Informatica e Programmazione 5 ASCII Table Dec Hx Oct Char Dec Hx Oct Char Dec Hx Oct Char Dec Hx Oct Char --------------- --------------- --------------- --------------- NUL (null) 32 2 4 SPACE 64 4 @ 96 6 4 ` SOH (start of heading) 33 2 4! 65 4 A 97 6 4 a 2 2 2 STX (start of text) 34 22 42 " 66 42 2 B 98 62 42 b 3 3 3 ETX (end of text) 35 23 43 # 67 43 3 C 99 63 43 c 4 4 4 EOT (end of transmission) 36 24 44 $ 68 44 4 D 64 44 d 5 5 5 ENQ (enquiry) 37 25 45 % 69 45 5 E 65 45 e 6 6 6 ACK (acknowledge) 38 26 46 & 7 46 6 F 2 66 46 f 7 7 7 BEL (bell) 39 27 47 ' 7 47 7 G 3 67 47 g 8 8 BS (backspace) 4 28 5 ( 72 48 H 4 68 5 h 9 9 TAB (horizontal tab) 4 29 5 ) 73 49 I 5 69 5 i A 2 LF (NL line feed, new line) 42 2A 52 * 74 4A 2 J 6 6A 52 j B 3 VT (vertical tab) 43 2B 53 + 75 4B 3 K 7 6B 53 k 2 C 4 FF (NP form feed, new page) 44 2C 54, 76 4C 4 L 8 6C 54 l 3 D 5 CR (carriage return) 45 2D 55-77 4D 5 M 9 6D 55 m 4 E 6 SO (shift out) 46 2E 56. 78 4E 6 N 6E 56 n 5 F 7 SI (shift in) 47 2F 57 / 79 4F 7 O 6F 57 o 6 2 DLE (data link escape) 48 3 6 8 5 2 P 2 7 6 p 7 2 DC (device control ) 49 3 6 8 5 2 Q 3 7 6 q 8 2 22 DC2 (device control 2) 5 32 62 2 82 52 22 R 4 72 62 r 9 3 23 DC3 (device control 3) 5 33 63 3 83 53 23 S 5 73 63 s 2 4 24 DC4 (device control 4) 52 34 64 4 84 54 24 T 6 74 64 t 2 5 25 NAK (negative acknowledge) 53 35 65 5 85 55 25 U 7 75 65 u 22 6 26 SYN (synchronous idle) 54 36 66 6 86 56 26 V 8 76 66 v 23 7 27 ETB (end of trans. block) 55 37 67 7 87 57 27 W 9 77 67 w 24 8 3 CAN (cancel) 56 38 7 8 88 58 3 X 2 78 7 x 25 9 3 EM (end of medium) 57 39 7 9 89 59 3 Y 2 79 7 y 26 A 32 SUB (substitute) 58 3A 72 : 9 5A 32 Z 22 7A 72 z 27 B 33 ESC (escape) 59 3B 73 ; 9 5B 33 [ 23 7B 73 { 28 C 34 FS (file separator) 6 3C 74 < 92 5C 34 \ 24 7C 74 29 D 35 GS (group separator) 6 3D 75 = 93 5D 35 ] 25 7D 75 } 3 E 36 RS (record separator) 62 3E 76 > 94 5E 36 ^ 26 7E 76 ~ 3 F 37 US (unit separator) 63 3F 77? 95 5F 37 _ 27 7F 77 DEL Daniela Fogli Elementi di Informatica e Programmazione 5 Codifica binaria di testi In generale interessa rappresentare non solo i caratteri che compongono un testo ma anche altre caratteristiche di formattazione quali: lo stile di scrittura (grassetto, corsivo, sottolineato, ) la dimensione del carattere il tipo o font (times new roman, arial, courier, ) l ampiezza dei margini della pagina Esistono diversi codici, detti formati che consentono di rappresentare un insieme più o meno ampio di caratteristiche: testo semplice (text o txt): corrisponde a una sequenza di caratteri ASCII senza caratteristiche di formattazione testo arricchito (rich text format o rtf): in grado di rappresentare un ristretto insieme di formattazioni (stile, dimensione, colori) testo Word (document o doc): in grado di rappresentare un insieme ampio di formattazioni Daniela Fogli Elementi di Informatica e Programmazione 52
Formati dei documenti per stampa e visualizzazione Formati standardizzati che sono orientati alla produzione di documenti destinati a stampa e visualizzazione: Documenti in formato PDF (Portable Document Format, formato di documento portabile) Documenti in formato PS (Postcript) - l applicazione GSview (Ghostview) legge il formato postcript Non limitati alla rappresentazione di testo ma possono includere anche immagini e disegni Daniela Fogli Elementi di Informatica e Programmazione 53
Elementi di Informatica e Programmazione La Codifica dell informazione (parte 4) Corsi di Laurea in: Ingegneria Civile Ingegneria per l Ambiente e il Territorio Università degli Studi di Brescia Docente: Daniela Fogli Tipologie di codici Nel seguito vedremo tipologie di rappresentazioni diverse: Senza assumere limitazioni sul numero di bit a disposizione: per numeri [notazione binaria, ovvero posizionale con base 2] Disponendo di un numero di bit limitato: numeri naturali interi relativi [valore assoluto e segno, compl. a, compl. a 2] reali [virgola fissa e virgola mobile] valori logici, caratteri alfabetici, testi suoni, immagini e sequenze video codici per la rilevazione e correzione di errori Codici di compressione (senza con perdita) Daniela Fogli Elementi di Informatica e Programmazione 2 Rappresentazione di informazioni multimediali La digitalizzazione Con appositi metodi e codifiche si possono rappresentare informazioni complesse con sequenze di bit: Immagini Filmati Suoni I problemi collegati alla gestione della rappresentazione, memorizzazione e elaborazione di queste informazioni sono: la richiesta di elevate capacità di elaborazione (es: calcoli necessari per riprodurre un video codificato in divx) occupazione elevata di memoria: per questo si utilizzano tecniche di compressione dei dati che consentono di ridurre la richiesta di memoria Voce Suoni Immagini Filmati Informazione continua rappresentazione anche approssimata tramite sequenze di bit Nel calcolatore Daniela Fogli Elementi di Informatica e Programmazione 3 Daniela Fogli Elementi di Informatica e Programmazione 4
In cosa consiste la digitalizzazione? Codifica di un suono Problema: codificare tramite una sequenza di bit una grandezza fisica (es. volume di un suono) i cui valori si assumono variabili in un intervallo continuo Soluzione: processo di digitalizzazione (o conversione analogica-digitale) Comprende 2 attività: Quantizzazione: discretizzazione dei valori attraverso approssimazione con uno dei valori compresi fra quelli previsti nella codifica Campionamento: se la grandezza inoltre varia anche nel tempo (es. un suono) o nello spazio (es. colore di un immagine) occorre selezionare un insieme finito di valori, ad intervalli (nel tempo o nello spazio) costanti in una sequenza di bit attraverso campionamento (nel tempo) e quantizzazione (in ampiezza) Frequenza di campionamento: numero di campioni acquisiti nell unità di tempo (es. numero di campioni al secondo, misurato in Hertz) - Es. frequenza di 5 Hz significa acquisizione di 5 campioni al secondo Il numero di bit necessari per codificare ogni valore è il parametro che qualifica la quantizzazione - Es. con 8 bit posso codificare 256 valori diversi Per ciascun intervallo di tempo viene scelto l istante di campionamento t i in cui viene rilevato il valore della grandezza La quantizzazione è su 4 livelli, quindi il risultato del campionamento è A 2 A 2 A A A 3 A 3 A La successione (codifica digitale) potrebbe essere Daniela Fogli Elementi di Informatica e Programmazione 5 Daniela Fogli Elementi di Informatica e Programmazione 6 Rappresentazione dei suoni nei CD audio Dal mondo reale al calcolatore (e viceversa) Segnali audio: onde analogiche campionamento + quantizzazione valori digitali Frequenza di campionamento: f c = 44. khz (44. campioni) per i 2 canali Quantizzazione: 6 (2 byte) bit/campione = 65536 valori diversi per campione (numero di livelli di quantizzazione) Dal mondo reale al calcolatore DIGITALIZZAZIONE (campionam. & quantizz.) NB: HW per acquisizione sonora (es. microfono) Dal calcolatore al mondo reale memorizzazione, eventuali elaborazioni Il numero di bit memorizzati è dunque: N bit = F(durata, f c, bit/campione) Nello standard CDDA (CD Digital Audio) 7 minuti registrazione richiedono 7 x 6 x 44. x 2 x 2 byte 75 MByte Nel calcolatore CONVERSIONE DIGITALE-ANALOGICA NB: scheda audio riceve i valori digitali e ricostruisce il segnale analogico + diffusori Daniela Fogli Elementi di Informatica e Programmazione 7 Daniela Fogli Elementi di Informatica e Programmazione 8
Alcuni formati audio Codifica delle immagini WAVE:.wav, occupano molto spazio (corrisponde a quanto visto nei lucidi precedenti: ~MB per minuto) MP3 (MPEG- Layer 3): grande diffusione su Internet. Utilizza tecniche di compressione per ridurre le dimensioni (vedi poi). MPEG nasce da un gruppo di lavoro di standardizzazione MIDI (Musical Instrument Digital Interface):.mid, i file memorizzano non suoni ma comandi (es. le note musicali di un particolare strumento) che vengono inviati ai dispositivi MIDI per riprodurre i suoni, occupano molto meno spazio dei.wav. Es: tastiera musicale + calcolatore permettono di suonare un brano su tastiera che viene automaticamente trascritto in notazione musicale in un file midi che può poi essere anche modificato Campionamento: Nel caso delle immagini è una discretizzazione nello spazio: si divide l immagine in quadrati, per ognuno dei quali si dovrà prelevare un campione che si considera rappresentativo di tutto il quadrato Questi quadrati sono trattati come elementi di base dell immagine digitale: sono chiamati pixel Quanti più pixel vengono considerati per unità di superficie tanto più precisa sarà la riproduzione dell immagine (risoluzione) Quantizzazione: codifica del colore associato a ogni pixel Immagini in bianco e nero: bit per pixel (b/n) Immagine a scala di grigi: es. un byte per pixel (256 livelli di grigio) Immagine a colori: es. con modello RGB (colore ottenuto per sovrapposizione di Rosso Verde e Blu) 3 byte per pixel, uno per ogni colore primario Daniela Fogli Elementi di Informatica e Programmazione 9 Daniela Fogli Elementi di Informatica e Programmazione Campionamento e quantizzazione: esempio Campionamento Maggie Cheung dal film Hero di Zhang Yimou (22) Daniela Fogli Elementi di Informatica e Programmazione Daniela Fogli Elementi di Informatica e Programmazione 2
Quantizzazione Codifica bitmap (raster) di immagini Immagine bitmap (o raster): matrice di pixel Per ogni pixel un certo numero di byte es. 3 byte (colori) o byte (b/n) Daniela Fogli Elementi di Informatica e Programmazione 3 L immagine è rappresentata direttamente come matrice di pixel Risoluzione: num. di pixel orizzontali X num. di pixel verticali Ad ogni pixel è riservato un certo numero di bit: bit (per pixel) 2 informazioni diverse (b/n) 4 bit (per pixel) 6 colori o livelli di grigio 8 bit (per pixel) 256 colori o livelli di grigio 6 bit (per pixel) 64K colori (2 6 = 2 x 2 6 ) 24 bit (per pixel) 6M = 2 24 colori (più di 6 milioni di colori) Daniela Fogli Elementi di Informatica e Programmazione 4 Immagini bitmap RGB Problemi con immagini bitmap L informazione sul colore di ogni pixel occupa 3 byte, uno per ogni colore primario (rosso, verde, blu) La quantità di colore primario è data da un valore tra e 255 (o equivalentemente è rappresentato da una sequenza di bit a partire da fino a ) Ogni ingrandimento fa perdere qualità (l immagine si sgrana ) vedi prossimo lucido per evitare questo problema si può usare la codifica vettoriale R=255, G=255, B=255 R=25, G=72, B=78 R=9, G=85, B=2 R=, G=, B= Occupano molta memoria. Possibili soluzioni: uso di tavolozze (palette) formati compressi codifica vettoriale Daniela Fogli Elementi di Informatica e Programmazione 5 Daniela Fogli Elementi di Informatica e Programmazione 6
Immagini bitmap: esempio Un immagine RGB occupa: 3 byte x risoluzione verticale x risoluzione orizzontale Esempio: un immagine RGB con risoluzione 24x768 pixel necessita di più di 2 MB Uso di tavolozze (palette) Spesso un immagine utilizza un numero limitato di colori (scelti comunque tra l insieme ampio di tutti i colori rappresentabili) Esempio banale: immagine RGB che usa due soli colori (qualsiasi) Dimensioni senza palette: numero pixel * 3 byte Idea: il formato memorizza i colori usati in un area specifica (palette) e per ogni pixel si indica quale dei due colori usato e se la ingrandisco si sgrana Insieme dei 6 M colori Tavolozza (2*3 byte) Matrice ( bit per pixel) IMMAGINE CODIFICATA Daniela Fogli Elementi di Informatica e Programmazione 7 Daniela Fogli Elementi di Informatica e Programmazione 8 Esercizio Esercizio Un immagine di risoluzione 24*768 utilizza 256 colori RGB. Quali dimensioni occupa la sua codifica se si utilizza una palette? E se non la si utilizza? Un immagine di risoluzione 24*768 utilizza 256 colori RGB. Quali dimensioni occupa la sua codifica se si utilizza una palette? E se non la si utilizza? Senza utilizzare palette: 24 * 768 * 3 byte = 2 * 3 * 2 8 * 3 byte = 2.359.296 byte Con utilizzo di palette: - 256 * 3 byte = 768 byte (per codificare la tavolozza) - a cui si sommano 24 * 768 * byte (per la matrice) TOTALE = 768 + 786.432 = 787.2 byte Daniela Fogli Elementi di Informatica e Programmazione 9 Daniela Fogli Elementi di Informatica e Programmazione 2
I formati di file bitmap Codifica vettoriale di immagini BMP: formato standard non compresso per MS Windows, 24 bit per pixel,.bmp. Gestisce palette a 2, 6, 256 colori + true color TIFF (Tagged Image File Format): alta qualità (32 bit per pixel), 6 milioni di colori (24 bit) + ulteriori proprietà, dimensioni file molto grandi,.tif, adottato da scanner e macchine fotografiche FORMATI COMPRESSI: GIF (Graphic Interchange Format): formato compresso, 8 bit per pixel (256 colori),.gif JPEG (Joint Picture Experts Group): 6 milioni di colori, formato compresso (più del gif),.jpg JPEG 2: formato ancor più compresso,.j2k o.jp2 Le immagini sono rappresentate tramite un insieme di elementi grafici (linee, rettangoli, ellissi, archi e curve) Memorizzazione come coordinate numeriche o formule matematiche che specificano forma e posizione: occupa poca memoria (es. un cerchio solo centro e raggio, una retta le coordinate degli estremi) Necessaria un operazione di rendering (rasterizzazione) che, a partire dalla descrizione matematica, produca l immagine raster Programmi di tipo draw (programmi di grafica vettoriale): es. Corel Draw, programmi di CAD, programmi di grafica tridimensionale Vantaggi: Controllo accurato di linee e colori Ingrandimento, riduzione, rotazione senza perdita Possibilità inserimento testo attorno agli oggetti Alcuni formati: DXF, DWG, CDR, AI, WMF Daniela Fogli Elementi di Informatica e Programmazione 2 Daniela Fogli Elementi di Informatica e Programmazione 22 Immagini vettoriali: esempio Codifica di sequenze video In teoria, una sequenza video è semplicemente una sequenza di fotogrammi (immagini): campionamento nel tempo (successione di fotogrammi) ciascun fotogramma rappresentato normalmente (campionamento nello spazio e quantizzazione) In pratica, le dimensioni risulterebbero troppo elevate. Facendo un conto a spanne, se un immagine occupa MB con 25 fotogrammi al secondo: 25 MB al secondo 25 x 6 MB al minuto = circa,5 GB al minuto! Tecniche di compressione specifiche per le sequenze video Daniela Fogli Elementi di Informatica e Programmazione 23 Daniela Fogli Elementi di Informatica e Programmazione 24
Mondo analogico e mondo digitale Rappresentazione analogica e digitale Come è rappresentato un brano musicale su un vecchio disco di vinile? rappresentazione analogica (la forma del solco descrive per analogia il suono da produrre) Come è rappresentato un brano musicale su un CD? rappresentazione digitale (il supporto dà una informazione cha va decodificata) Rappresentazione analogica: le configurazioni assunte dal supporto possono variare in modo continuo e riflettono secondo una analogia diretta la struttura dell informazione Limite: applicabile solo se esiste un supporto in grado di ricreare tra le sue configurazioni una struttura corrispondente a quella presente sull insieme degli elementi di informazione Rappresentazione digitale: l insieme delle configurazioni è finito (e fissato a priori) e la struttura dell informazione si può dedurre dalle configurazioni solo attraverso una specifica regola di codifica. Limite: si può rappresentare un insieme di elementi di informazione finito e predefinito (se emerge l esigenza di codificare un nuovo elemento, necessario rivedere o estendere la codifica) Daniela Fogli Elementi di Informatica e Programmazione 25 Daniela Fogli Elementi di Informatica e Programmazione 26 Esempio Perché la rappresentazione digitale? E perché proprio quella binaria? (a) Corrispondenza fra l orario e la posizione dell ago sulla scala (b) Configurazioni convenzionali: combinazioni di segmenti illuminati Una qualunque grandezza fisica può essere convertita in forma digitale (conversione analogico-digitale o digitalizzazione) La conversione conduce a perdita di informazione (il segnale originario non può essere ricostruito in modo esatto a partire dal segnale digitale). Tuttavia: Campionamento: è (almeno in linea teorica) reversibile (no perdita di informazione) se la frequenza di campionamento è sufficientemente alta Quantizzazione: perdita di informazione arbitrariamente piccola all aumentare del numero di livelli di quantizzazione Inoltre i valori dei segnali analogici in realtà non sono tutti distinguibili (rumore, imprecisione strumento di misura, ecc.) Daniela Fogli Elementi di Informatica e Programmazione 27 Daniela Fogli Elementi di Informatica e Programmazione 28
Immunità al rumore (affidabilità) Altre ragioni del predominio del digitale 5 4 3 2 (a) Volt 4 3 2 2.5 5 (b) Volt +5 V 3.5 V In realtà:.5 V V Valore Valore Con (a) sono tollerati disturbi fino a.5 V, con (b) fino a.25 V L immunità al rumore risulta essere una delle ragioni fondamentali che hanno determinato il predominio della rappresentazione digitale su quella analogica In particolare la codifica binaria è quella migliore Molte informazioni sono di natura prettamente simbolica Uniformità nella rappresentazione: una varietà ristretta di dispositivi può realizzare svariate funzioni Tecniche di codifica e trasmissione uniformi su tipologie di informazioni diverse Elaborazione simbolica (numerica) delle informazioni digitali (mediante operazioni matematiche) in tempi brevi Elaborazione digitale per modificare le caratteristiche di un segnale analogico (es. restauro di incisioni audio o di pellicole cinematografiche) Daniela Fogli Elementi di Informatica e Programmazione 29 Daniela Fogli Elementi di Informatica e Programmazione 3
Elementi di Informatica e Programmazione La Codifica dell informazione (parte 5) Corsi di Laurea in: Ingegneria Civile Ingegneria per l Ambiente e il Territorio Università degli Studi di Brescia Docente: Daniela Fogli Tipologie di codici Nel seguito vedremo tipologie di rappresentazioni diverse: Senza assumere limitazioni sul numero di bit a disposizione: per numeri [notazione binaria, ovvero posizionale con base 2] Disponendo di un numero di bit limitato: numeri naturali interi relativi [valore assoluto e segno, compl. a, compl. a 2] reali [virgola fissa e virgola mobile] valori logici, caratteri alfabetici, testi suoni, immagini e sequenze video codici per la rivelazione e correzione di errori Codici di compressione (senza con perdita) Daniela Fogli Elementi di Informatica e Programmazione 2 Un esempio: memorizzazione di informazioni Un esempio: memorizzazione di informazioni... Informazioni da memorizzare (ad esempio: in un CD)... Informazioni da memorizzare (ad esempio: in un CD)??? Daniela Fogli Elementi di Informatica e Programmazione 3 Daniela Fogli Elementi di Informatica e Programmazione 4
Un esempio: trasmissione di informazioni Errore......??? Errore: modifica di un bit ( diventa oppure diventa ) Posso avere uno o più errori LA SOLUZIONE Su una sequenza di bit, usare dei codici particolari che permettono: Di rivelare la presenza di errori: CODICI RIVELATORI Di correggere gli errori, ricostruendo la sequenza originaria: CODICI CORRETTORI Daniela Fogli Elementi di Informatica e Programmazione 5 Daniela Fogli Elementi di Informatica e Programmazione 6 Come? Codice ridondante dominio O8 O7 O O2 O6 O4 O5 O3 codominio insieme delle codifiche L insieme delle codifiche è un sottoinsieme proprio del codominio l insieme delle non codifiche è non nullo O O 2 insieme delle codifiche Esempio: codice ridondante a due bit 8 oggetti, 3 bit: il codice è non ridondante Non è possibile rivelare né correggere errori Per rivelare o correggere errori dobbiamo introdurre della ridondanza dominio Per esempio: insieme delle non-codifiche codominio se codifico O e ho un errore (ad esempio sul primo bit) ottengo rivelazione dell errore Daniela Fogli Elementi di Informatica e Programmazione 7 Daniela Fogli Elementi di Informatica e Programmazione 8
Quanto? Rivelazione: l idea Voglio un codice che, per qualunque codifica sia in grado di rilevare/correggere k errori comunque siano distribuiti d = 5 Esempio: un semplice codice per due entità, 5 bit Atalanta Brescia Distanza tra le codifiche: d = 5 Si può dimostrare che si possono rivelare fino a k = 4 errori (d k+) Si può dimostrare che si possono correggere fino a k = 2 errori (d 2k+) Fino a 4 errori Data una codifica (es. ) un alterazione di un numero di bit minore o uguale a k = 4 non può generare l altra codifica () poiché la distanza è 5 (k + ) Daniela Fogli Elementi di Informatica e Programmazione 9 Daniela Fogli Elementi di Informatica e Programmazione Correzione: l idea In generale d = 5 2k+ k k k+ Distanza fra due sequenze di bit: numero di bit di pari posto che hanno diverso valore nelle due sequenze (es. la distanza fra e è 4) Distanza di un codice: minimo valore delle distanze tra ogni coppia di elementi appartenenti all insieme delle codifiche Data una codifica (es. ) un alterazione di un numero di bit minore o uguale a k = 2 può generare una non-codifica che può essere corretta associando ad essa la codifica avente distanza minima Es. sia la codifica di partenza e una non-codifica con k = 2 errori, la codifica associata con distanza minima è proprio, invece avendo la non-codifica (codifica con 3 errori) non posso risalire alla codifica perché correggendo troverei Daniela Fogli Elementi di Informatica e Programmazione Rivelazione e correzione di errori Per rivelare k errori, un codice deve avere distanza d con d k+ Per correggere k errori, un codice deve avere distanza d con d 2k+ Daniela Fogli Elementi di Informatica e Programmazione 2
Codice di parità Esercizio Esempio di codice rilevatore: il codice di parità Dato un codice: si aggiunge un bit in modo che il numero di sia pari (parità pari) [o dispari (parità dispari)] Esempio Codice ASCII a 7 bit Bit di parità (codice a parità pari) Per codificare i tre simboli D, F, I si utilizza il seguente codice a 5 bit: D F I Errori di trasmissione possono dar luogo alla modifica di uno o più bit. a) Quanti errori è in grado di rivelare il codice in generale? b) E quanti errori è in grado di correggere? d = 2 (a partire da una codifica con un numero pari di è necessario modificare almeno 2 bit per ottenere una sequenza che a sua volta abbia un numero pari di, ovvero che sia una codifica) può rivelare un errore, correggerne nessuno Daniela Fogli Elementi di Informatica e Programmazione 3 Daniela Fogli Elementi di Informatica e Programmazione 4 Soluzione Esercizio d 2 = 3 d 23 = 4 d 3 = 3 la distanza del codice è pari a 3 a) Errori rilevati: d k+ quindi k max = 2 (possono essere rivelati 2 errori) b) Errori corretti: d 2k+ quindi k max = (3-)/2= (può essere corretto errore) Si consideri il codice a tre valori originari codificato con 2 codificato con 3 codificato con a) Trovare quanti errori può correggere e rivelare in generale. b) Si supponga di ricevere la sequenza. Assumendo che possano essere stati compiuti al più 2 errori, è possibile decodificare correttamente la sequenza? Come si giustifica la risposta in relazione al risultato trovato nel punto a)? Daniela Fogli Elementi di Informatica e Programmazione 5 Daniela Fogli Elementi di Informatica e Programmazione 6
Soluzione (a) Soluzione (b) a) Risulta: d 2 = d 23 = 5 d 3 = 6 quindi la distanza del codice è il codice non può (in generale) rivelare né tanto meno correggere alcun errore [errori rilevati: d k+, quindi con k= serve d 2] b) Ricevo, mentre avevo: dist = 4 2 dist 2 = 3 3 dist 3 = 2 In questo caso posso decodificare con il valore 3. Se sono stati commessi al più due errori, sono sicuro che la decodifica è corretta, perché: dist = 4 > 2 [ non può essere modificato in ] dist 2 = 3 > 2 [ non può essere modificato in ] Daniela Fogli Elementi di Informatica e Programmazione 7 Daniela Fogli Elementi di Informatica e Programmazione 8 Perchè? Tipologie di codici Come mai posso correggere due errori anche se (cfr. punto a) il codice ha distanza? La distanza del codice si riferisce al caso peggiore (distanza minima) le relative formule garantiscono le proprietà del codice di rivelazione e correzione di errori in ogni caso, ovvero per qualunque simbolo rappresentato e per qualunque posizione degli errori Per esempio, nel caso venga trasmesso (codificato con ), è sufficiente un errore sull ultimo bit per ottenere, che è pari alla codifica di 2 : in tal caso l errore non verrebbe neppure rivelato! Nel seguito vedremo tipologie di rappresentazioni diverse: Senza assumere limitazioni sul numero di bit a disposizione: per numeri [notazione binaria, ovvero posizionale con base 2] Disponendo di un numero di bit limitato: numeri naturali interi relativi [valore assoluto e segno, compl. a, compl. a 2] reali [virgola fissa e virgola mobile] valori logici, caratteri alfabetici, testi suoni, immagini e sequenze video codici per la rivelazione e correzione di errori Codici di compressione (senza con perdita) Daniela Fogli Elementi di Informatica e Programmazione 9 Daniela Fogli Elementi di Informatica e Programmazione 2
La compressione dei dati Concetti fondamentali Cambiando modalità di codifica è possibile ridurre il numero dei bit richiesti Vantaggi per memorizzazione e trasmissione Esempio: rappresentare una sequenza di milione di caratteri, ognuno appartenente all insieme {A, C, G, T} se uso 4 configurazioni a 2 bit ho bisogno di 2 milioni di bit ma se so che la frequenza dei caratteri all interno della sequenza varia (es. 5% A, 25% C, 2.5% G e T) allora posso usare una codifica diversa: A =, C =, G = e T = Num. bit complessivi = (x5%+2x25%+3x2.5%+3x2.5%) x milione =.75 milioni Ho ridotto il numero di bit senza perdere informazione Per qualunque tecnica di compressione: data una sequenza di bit S Denotiamo con S il numero dei bit della sequenza funzione di compressione F c t.c. F c (S) < S rapporto di compressione S / F c (S) (NB: > ) funzione di decompressione F d per ricostruire la successione originaria: F d (F c (S)) Due tipi di compressione dei dati: senza perdita (lossless) è garantito che F d (F c (S)) = S, ovvero F d =F c - con perdita (lossy) in generale F d (F c (S)) S (perdita di informazione) Daniela Fogli Elementi di Informatica e Programmazione 2 Daniela Fogli Elementi di Informatica e Programmazione 22 Algoritmi di compressione dati senza perdita Algoritmi di compressione dati con perdita Si adottano quando non si può perdere informazione, es. programmi in formato eseguibile, file doc Svantaggio: ridotto rapporto di compressione Principio fondamentale: sottosequenze di bit frequenti sostituite con codici opportuni Esempi: formati ZIP e RAR (con un apposito programma di utilità - es. winzip - si può creare un archivio in cui i file vengono memorizzati in formato compresso) formato GIF (per le immagini raster): utilizzo di un dizionario con le configurazioni di valori che si ripetono Si applicano a dati che hanno origine nel mondo analogico (suoni, immagini, sequenze video, ecc.) Si adottano quando si è disposti a perdere una parte dell informazione durante la compressione: compromesso qualità/rapporto di compressione Tecniche dipendenti dalla natura del segnale considerato: per i suoni, variazioni di volume e frequenza al di sotto di una certa soglia non sono percepite dall orecchio umano; inoltre i suoni a basso volume sovrapposti a suoni di volume maggiore sono poco udibili (formato compresso MP3) per le immagini, lievi cambiamenti di colore in punti contigui non sono percepiti dall occhio umano (formato JPEG) nelle animazioni video, immagini successive hanno spesso molte parti uguali e si possono codificare solo le differenze (formato MPEG) Daniela Fogli Elementi di Informatica e Programmazione 23 Daniela Fogli Elementi di Informatica e Programmazione 24