320 likes | 506 Views
Informatica Generale. Marzia Buscemi IMT Lucca email: buscemi@di.unipi.it Ricevimento: Giovedì ore 16.00-18.00 presso Dipartimento di Informatica, Largo Pontecorvo, 3 stanza 306 PS (lab. Global Computing) Tel. 050.2213102 o per posta elettronica Pagina web del corso:
E N D
Informatica Generale Marzia Buscemi IMT Lucca email: buscemi@di.unipi.it Ricevimento: Giovedì ore 16.00-18.00 presso Dipartimento di Informatica, Largo Pontecorvo, 3 stanza 306 PS (lab. Global Computing) Tel. 050.2213102 o per posta elettronica Pagina web del corso: http://www.di.unipi.it/~buscemi/IG07.htm
Di cosa abbiamo parlato finora • L’architettura di Von Neumann Sottosistema di Interfaccia Processore (CPU) Memoria (RAM,dischi, etc) Mantiene Dati e Programmi E’ un esecutore capace di interpretare i singoli passi richiesti dai programmi (istruzioni elementari) Permette di comunicare dati e programmi alla macchina e di ottenere i risultati (tastiera, microf. stampante, schermo, etc)
Hardware - SoftwareStruttura di un calcolatore Hardware • hw e sw Sottosistema di Interfaccia Processore Memoria bus Mantiene Dati e Programmi Software
Algoritmi e programmi Elaborazione Dati di uscita Dati di ingresso Trasformazione dei dati di ingresso e esecuzione passi specificati da un opportuno algoritmo Codificati opportunamente Ovvero la descrizione dell’algoritmo secondo un linguaggio comprensibile al calcolatore Calcolatore (che conosce alcune azioni elementari: es confrontare due numeri, eseguire semplici operazioni aritmetiche Umano (che conosce l’algoritmo) programma
Codifica e Rappresentazione dell’informazione Cosa vedremo : Rappresentazione binaria Codifica dei numeri Codifica dei caratteri Codifica delle immagini Compressione dei dati Codifica dei suoni
Perché è necessario codificare le informazioni? • Tutta l’informazione interna ad un calcolatore (digitale) deve essere codificata in forma numerica. • La rappresentazione usata dai calcolatori è binaria, cioè fatta di sequenze di due soli numeri: 0 e 1 • è facile realizzare dispositivi elettronici che distinguere fra due stati, molto meno se gli stati sono tanti • L’unità elementare di informazione si chiama bitda‘binarydigit’
Rappresentazione binaria (2) • byte : la sequenza di 8 bit • word (parola) : 2 o 4 byte (dipende dalla macchina) unità minima che può essere fisicamente letta o scritta nella memoria
Rappresentazione binaria (2) • Vedremo prima come rappresentare (codificare) i numeri decimale come sequenze di 0 e 1 • E poi discuteremo la rappresentazione di insiemi di oggetti finiti (caratteri, testi, immagini, suoni)
Notazione posizionale in base 10 • Un numero (es. 5) può essere rappresentato in molti modi: • cinque, five, 5, V, • Rappresentazioni diverse hanno proprietà diverse • moltiplicare due numeri in notazione romana è molto più difficile che moltiplicare due numeri in notazione decimale… • Noi siamo abituati a lavorare con numeri rappresentati in notazione posizionale in base 10
Notazione posizionale in base 10 (2) • La rappresentazione di un numero intero in base 10 è una sequenza di cifre scelte fra 0 1 2 3 4 5 6 7 8 9 • es: 23, 118, 4 • Il valore di una rappresentazione cN-1…c0 è dato da cN-1 *10N-1 + cN-2 *10N-2 ….+ c1 *101 + c0 *100 esempi : ... 23= 118 = ...
Notazione posizionale in base 10 (3) Vediamo alcune proprietà di questa notazione : • Il massimo numero rappresentabile con N cifre è 99….9 (N volte 9, la cifra che vale di più), pari a 10N-1 • es: su tre cifre il massimo numero rappresentabile è 999 pari a 103-1 =1000-1
Notazione posizionale in base 10 (4) • Quindi se voglio rappresentare K diversi numeri (cioè 0 1 2 …K-1) mi servono almeno x cifre dove 10x è la più piccola potenza di 10 che supera K • es : se voglio 25 numeri diversi mi servono almeno 2 cifre perché 102=100 è la più piccola potenza di 10 maggiore di 25 es : se voglio 110 numeri?
Notazione posizionale in base 2 • La rappresentazione di un numero intero in base 2 è una sequenza di cifre scelte fra 0 1: • es: 10, 110, 1 • Il valore di una rappresentazione cN…c0 è dato da: cN-1 *2N-1 + cN-2 *2N-2 ….+ c1 *21 + c0 *20 esempi : • 10 = 1*21 + 0 *20 = 2 • 110 = 1*22 + 1*21 + 0 *20 = 4 + 2 + 0 = 6 • 1 = 1 *20 = 1 1001 = ?
Notazione posizionale in base 2(2) Per la base due valgono proprietà analoghe a quelle viste per la base 10 : • Il massimo numero rappresentabile con N cifre è 11….1 (N volte 1, la cifra che vale di più), pari a 2N-1 • es: su tre cifre il massimo numero rappresentabile è?
Notazione posizionale in base 2(3) Per la base 2 valgono proprietà analoghe a quelle viste per la base 10 (cont.): • Quindi se voglio rappresentare K diversi numeri (cioè 0 1 2 …K-1) mi servono almeno almeno x cifre dove 2x è la più piccola potenza di 2 che supera K • es : se voglio 25 numeri diversi mi servono almeno 5 cifre perché 25=32 è la più piccola potenza di 2 maggiore di 25
Notazione posizionale in base 2(4) • Somma binaria (somma mod 2): 0100 + 0110 = 1010 Qual è la somma di 01 e 111?
Dato un numero X si cerca la sua rappresentazione in base 2 cN-1…c0 Conversione per divisione : si divide ripetutamente X per 2 il resto ottenuto nella divisione i-esima è la i-esima cifra (ci) della rappresentazione binaria Conversione da base 10 a base 2
Come si converte X nella sua rappresentazione in base 2 cN…c0 usando il metodo della divisione Es : convertiamo il numero 13 13 / 2 da quoziente 6 e resto 1 (c0) 6 / 2 da quoziente 3 e resto 0 (c1) 3 / 2 da quoziente 1 e resto 1 (c2) 1 / 2 da quoziente 0 e resto 1 (c3) La rappresentazione di 13 è 1101 Qual è la rappr. di 10? E di 26? Conversione da base 10 a base 2 (2)
Conversione da base 10 a base 2 (3) Nella conversione da base 10 a base 2 l’adozione della notazione posizionale permette di definire: • MSB (most significant bit): il bit più a sinistra della rappresentazione • LSB (least significant bit): il bit più a destra
Rappresentazione di un insieme finito di oggetti • Vogliamo rappresentare i giorni della settimana : {Lu, Ma, Me, Gio, Ve, Sa, Do} usando sequenze 0 e 1 • Questo significa costruire un ‘codice’, cioè una tabella di corrispondenza che ad ogni giorno associa una opportuna sequenza • In principio possiamo scegliere in modo del tutto arbitrario….
Rappresentazione di un insieme finito di oggetti (3) • Una possibile codifica binaria per i giorni della settimana • Di solito si usa un numero di bit uguale per tutti: il minimo indispensabile • Di solito si usa un numero di bit uguale per tutti : il minimo indispensabile
Rappresentazione di un insieme finito di oggetti (4) • Per rappresentare 7 oggetti diversi servono almeno 3 bit (minima potenza di due che supera 7 è 8= 23) quindi : 000 Lunedì 110 Domenica 001 Martedì 111 non ammesso 010 Mercoledì 011 Giovedì 100 Venerdì 101 Sabato
Rappresentazione di caratteri e stringhe • I caratteri sono un insieme finito di oggetti e seguono la strategia vista per i giorni della settimana • Perché due diversi calcolatori si possano parlare correttamente è necessario che usino lo stesso codice
Rappresentazione di caratteri e stringhe (2) • Codifiche di uso comune : • il codice ASCII (American Standard code For Information Interchange) su 7 (128=27) o 8 bit (256=28) • il codice UNICODE su 16 bit (più recente, permette di rappresentare anche alfabeti diversi e simboli per la scrittura di lingua orientali) • Le stringhe sono generalmente sequenze di caratteri terminate in modo particolare
Rappresentazione di immagini • Le immagini sono un ‘continuo’ e non sono formate da sequenze di oggetti ben finiti come i numeri e i testi • Bisogna quindi prima ‘discretizzarle’ ovvero trasformarle in un insieme di parti distinte che possono essere codificate separatamente con sequenze di bit • Bisogna definire il termine informale di “elemento d’informazione”
Rappresentazione di immagini (2) • Immagini ‘bitmap’ : 1. l’immagine viene scomposta in una griglia di elementi detti pixel (da picture element) 000000000000000000000000 000000000011111111000000 000000000010000010000000 000000000010000100000000 000000000010001000000000 000000000010010000000000 000000000010100000000000 000000000011000000000000 000000000010000000000000 immagine codifica
Rappresentazione di immagini (3) • Immagini ‘bitmap’ : 2. Ogni pixel è rappresentato da uno o più bit 000000000000000000000000 000000000011111111000000 000000000010000010000000 000000000010000100000000 000000000010001000000000 000000000010010000000000 000000000010100000000000 000000000011000000000000 000000000010000000000000 Rappresentazione di un pixel
Rappresentazione di immagini (4) • Rappresentazioni dei pixel : • la rappresentazione in ‘toni di grigio’ : un byte per pixel, con 256 gradazioni di grigio per ogni punto (immagini bianco e nero), o più byte per pixel, per avere più gradazioni possibili • rappresentazione a colori RGB (red, green,blu) : comunemente 3 byte per pixel che definiscono l’intensità di ciascun colore base. In questo modo ho circa 16 milioni di colori diversi definibili
Rappresentazione di immagini (5) • Problema : • la rappresentazione accurata di una immagine dipende • dal numero di pixel (definizione) • dalla codifica del pixel • molta memoria, ad esempio : tipo imm. Defin. numero colori num.byte televisiva 720x625 256 440 KB SVGA 1024x768 65536 1.5MB foto 15000x10000 16milioni 430 MB
Rappresentazione di immagini (6) • Quindi si cerca di ‘risparmiare’ memoria : • con l’uso di una ‘tavolozza’ (palette) che contiene il sottoinsieme dei colori rappresentabili che compare in una foto • ogni pixel codifica un indice all’interno della tavolozza • con tecniche di compressione che non codificano ogni pixel in modo autonomo ma cercano di raggruppare le aree che hanno caratteristiche comuni • Formati più usati : TIFF (tagged image file format), GIF (graphics interchange format), JPEG (Joint photographers expert group)