Codifica binaria dell`informazione
Transcript
Codifica binaria dell`informazione
Sommario ! ! ! ! Codifica binaria dell'informazione Elementi di Informatica Docente: Giorgio Fumera Codifica analogica e numerica Codifica binaria Codifica binaria di informazioni numeriche Codifica binaria di informazioni non numeriche (testi, suoni, immagini, ...) Testi di riferimento: Corso di Laurea in Edilizia Facoltà di Architettura A.A. 2009/2010 – Sciuto et al., Introduzione ai sistemi informatici – Ceri et al., Informatica, arte e mestiere 2 Codifica dell'informazione: esempi Codifica dell'informazione: esempi 3 4 Codifica dell'informazione: esempi Codifica dell'informazione: esempi 5 Codifica analogica 6 Codifica analogica e numerica Si vedano i testi di riferimento per una descrizione dettagliata della codifica analogica e numerica 7 8 Codifica analogica Codifica numerica Ogni “valore” che l'informazione può assumere viene codificato associandolo a una delle infinite configurazioni che possono essere assunte da un mezzo fisico Esempi – velocità di un'automobile o quantità di carburante nel serbatoio " angolo d'inclinazione di una lancetta sul cruscotto – suoni (parole, musica): ampiezza dell'onda sonora nel tempo " profondità del solco sulla superficie di un disco in vinile Ogni “valore” che l'informazione può assumere viene codificato associandolo a una configurazione, scelta tra un insieme finito, che può essere assunta da un mezzo fisico Se l'informazione può assumere infiniti valori (nello spazio, nel tempo, ecc.), è necessaria un'approssimazione – – campionamento (temporale, spaziale): i valori assunti dall'informazione da codificare vengono misurati in un insieme finito di istanti di tempo o di punti dello spazio quantizzazione: si codifica solo un numero finito di valori, approssimando gli altri Esempi – – quantità di carburante " indicatori luminosi (accesi o spenti) suoni " sequenze di fori (presenza o assenza del foro) in posizioni predefinite sulla superficie di un CD 9 Codifica numerica Codifica numerica Astraendo dal mezzo fisico: – la codifica numerica consiste nel rappresentare l'informazione attraverso sequenze di simboli – ogni simbolo può assumere m possibili valori ! m = 2: codifica binaria ! m = 3: codifica “ternaria” ! ... 10 Due livelli: ! codifica “logica”: quale sequenza di simboli associo a ogni possibile valore dell'informazione da codificare? ! codifica “fisica”: con quale configurazione fisica del mezzo di memorizzazione/trasmissione/elaborazione rappresento i possibili valori di ogni simbolo? In questo corso ci interessiamo alla codifica numerica solo dal punto di vista logico La codifica numerica più diffusa è quella binaria. Perché? minore probabilità di guasti ed errori, maggiore facilità nel progetto dei dispositivi di memorizzazione, elaborazione e trasmissione dell'informazione codificata, ... 11 12 Codifica binaria Sistemi di numerazione posizionali Ogni simbolo può assumere solo due valori, indicati per convenzione con i simboli 0 e 1 Un simbolo è detto bit (binary digit): è la più piccola unità d'informazione Valore di un numero N espresso come sequenza di cifre an-1an-2 ... a1a0 , a-1a-2... in una qualsiasi base b(b > 1, ai $ {0, b - 1}): Quante possibili configurazioni possono essere assunte da una sequenza di n bit? 1 bit: 2 configurazioni 0 2 bit: 2#2 configurazioni 3 bit: 2#2#2 configurazioni ... 0 0 1 1 1 0 0 1 0 1 ... Esempio (in base dieci): 1 1.024,25dieci = 1#103 + 0#102 + 2#101 + 4#100 + 2#10-1 + 5#10-2 0 1 ... n bit: 2n configurazioni 13 Sistemi di numerazione posizionali 14 Sistemi di numerazione posizionali Passaggio da una base diversa da dieci alla base dieci: facile Passaggio dalla base dieci a un'altra base? –3014otto = –(3#83 + 0#82 + 1#81 + 4#80)dieci = –1548dieci –12,92dieci = ?otto = – (1#121 + 2#120 + 11#12-1 + 4#12-2)otto = ? +100101due = (1#25 + 0#24 + 0#23 + 1#22 + 0#21 + 1#20)dieci = +37dieci +31,46dieci = ?due –0,314cinque = –(3#5–1 + 1#5–2 + 4#5–3)dieci = –0,672dieci = +(11#10101 + 1#10100 + 100#1010-1 + 110#1010-2)due = ? +102,02tre = (1#32 + 0#31 + 2#30 + 0#3–1 + 2#3–2)dieci = +11,222...dieci 15 16 Rappresentazione della parte intera: algoritmo delle divisioni successive per b Passaggio dalla base dieci a un'altra base Per facilitare il passaggio dalla rappresentazione di un numero in base 10 a una qualsiasi altra base b si usa un metodo che consente di eseguire calcoli solo in base dieci – rappresentazione della parte intera: algoritmo delle divisioni successive per la base b – rappresentazione della parte frazionaria: algoritmo delle moltiplicazioni successive per la base b Dato un numero intero N, le cifre della sua rappresentazione in base b sono pari alla sequenza dei resti delle divisioni per b di N e dei quozienti successivi NOTA: nel seguito si indica con il simbolo mod l'operatore aritmetico modulo, che restituisce il resto della divisione tra due numeri interi (es.: 7 mod 2 = 1) 17 Rappresentazione della parte intera: algoritmo delle divisioni successive per b 18 Rappresentazione della parte intera: algoritmo delle divisioni successive per b Si prosegue fino a trovare Nn=0 per un certo valore di n N = N1#b + R0 (N1 = N/b, R0 = N mod b) Il valore di N può quindi essere scritto come: se N1 % 0, allora N1 = N2#b + R1 (N2 = N1/b, R1 = N1 mod b), quindi N può essere riscritto come: N = (N2#b + R1)#b + R0 = N2#b2 + R1#b1 + R0#b0 N = Rn-1#bn-1 + Rn-2#bn-2 + ... + R1#b1 + R0#b0 se N2 % 0, allora N2 = N3#b + R2 (N3 = N2/b, R2 = N2 mod b), quindi N può essere riscritto come: N = (N3#b + R2)#b2 + R1#b1 + R0#b0 Questa espressione è una somma di potenze della base b. Inoltre, i coefficienti Ri (i = 0, ..., n-1) sono numeri interi nell'insieme {0, 1, ..., b-1}, poiché sono resti di divisioni per b. Quindi le cifre della rappresentazione di N in base b corrispondono alla sequenza dei resti: Rn-1 Rn-2 ... R1 R0 = N3#b3 + R2#b2 + R1#b1 + R0#b0 ... 19 20 Rappresentazione della parte intera: algoritmo delle divisioni successive per b Rappresentazione della parte frazionaria: algoritmo delle moltiplicazioni successive per b Dato un numero frazionario F < 1, si indichino le cifre della sua rappresentazione in base b come segue: F = 0 , c-1c-2c-3 ... = c-1#b-1 + c-2#b-2 + c-3#b-3 + ... Esempio: rappresentazione di 12dieci in base due N N1 N2 N3 N4 12 6 3 1 0 0 0 1 1 R0 R1 R2 R3 (si ricordi che ci $ {0, b - 1}) Moltiplicando F per b si ottiene: F#b = c-1#b0 + c-2#b-1 + c-3#b-2 + ... = I1 + F1 dove I1 è la parte intera di F´b, pari a c-1, e F1 è la parte Quindi: 12dieci = 1100due frazionaria, pari a c-2#b-1 + c-3#b-2 + ... Quindi, la prima cifra c-1 è la parte intera di F#b (continua nella pagina successiva) 21 Rappresentazione della parte frazionaria: algoritmo delle moltiplicazioni successive per b 22 Rappresentazione della parte frazionaria: algoritmo delle moltiplicazioni successive per b Moltiplicando F1 per b si ottiene: Esempio: rappresentazione di F = 0,625dieci in base due F1#b = c-2#b0 + c-3#b-1 + ... = I2 + F2 dove I2 è la parte intera di F1#b, pari a c-2, e F2 è la parte 0,625 # 2 = 1,25 = 1 + 0,25 (I1 = 1, F1 = 0,25) frazionaria, pari a c-3#b-1 + ... 0,25 # 2 = 0,5 = 0 + 0,5 (I2 = 0, F2 = 0,5) Quindi, la seconda cifra c-2 è la parte intera di F1#b 0,5 # 2 = 1,0 = 1 + 0 (I3 = 1, F3 = 0) Si continua in questo modo, arrestandosi quando – si ottiene Fn+1 = 0, per un certo valore di n, oppure – si raggiunge il numero n di cifre frazionarie desiderato. Si noti che la rappresentazione di un numero frazionario può avere infinite cifre: in questo caso è necessaria un'approssimazione (es.: 1/3 in base dieci si scrive come 0,3333...) 23 Poiché si è ottenuta una parte frazionaria nulla, il numero F può essere espresso con un numero finito di cifre in base due (in questo caso, tre cifre) e il procedimento si arresta. Quindi: 0,625dieci = 0,101due 24 Operazioni su numeri in base due Codifica binaria dei numeri Si eseguono con gli stessi principi che si usano quando si rappresentano i numeri in base dieci (“riporti” e “prestiti” per addizioni e sottrazioni, ...) Le tecniche di codifica binaria dei numeri sfruttano la rappresentazione in base due dei numeri La situazione più comune nei calcolatori (e non solo) consiste nel codificare il valore di qualsiasi numero usando un numero n predefinito di bit (di norma n è pari al numero di bit di una cella della memoria principale) Esempio: 9dieci + 3dieci = 12dieci In base due (si noti che 1due + 1due = 10due): 1001 + 11 = 1100 Di seguito si descrive la codifica binaria di – numeri naturali – numeri interi (segno e valore, complemento a due) – numeri reali (virgola fissa, virgola mobile) 25 Codifica binaria dei numeri naturali ! ! 26 Codifica binaria dei numeri naturali Insieme dei numeri naturali (compreso lo 0): {0, 1, 2, 3, ... } È un insieme infinito, ma con una sequenza finita di simboli in una qualsiasi codifica numerica è possibile codificarne solo un sottoinsieme finito In codifica binaria, con n bit si possono codificare solo 2n numeri naturali diversi: quali? Una possibile scelta: {0, 1, 2, 3, ..., 2n - 1} Es.: se n = 3, si codificano i numeri {0, 1, ..., 7} 27 ! Con quale configurazione degli n bit si codifica ogni numero in {0, 1, 2, 3, ..., 2n – 1}? La scelta più naturale è la seguente. Sfruttando l'analogia tra le due cifre 0 e 1 della rappresentazione in base due dei numeri, e i due simboli 0 e 1 usati per convenzione nella codifica binaria, ogni numero viene codificato con la sequenza di n bit corrispondente alle n cifre meno significative (cioè con “peso” minore) della sua rappresentazione in base due 28 Codifica binaria dei numeri naturali Codifica binaria dei numeri interi: segno e valore Esempio: n = 3 Rappresentazione in base due ! Codifica binaria 0dieci = 0due = 000due 000 1dieci = 1due = 001due 001 2dieci = 10due = 010due 010 3dieci = 11due = 011due 011 4dieci = 100due 100 5dieci = 101due 101 6dieci = 110due 110 7dieci = 111due 111 ! ! Insieme dei numeri interi: {..., -3, -2, -1, 0, 1, 2, 3, ... } È un insieme infinito In codifica binaria, con n bit si possono codificare solo 2n numeri interi diversi: quali? Una possibile scelta: si codificano separatamente il segno e il valore assoluto – segno: due valori (positivo e negativo), basta un bit. Due possibiltà: la più comune: positivo " 0, negativo " 1 – restano n - 1 bit per codificare il valore assoluto: si possono codificare 2n-1 valori assoluti diversi. Quali? La scelta più naturale consiste nel codificare i valori {0, 1, 2, ..., 2n-1 – 1} Quindi l'insieme dei valori codificabili è {-(2n-1 – 1), ..., +2n-1 – 1} Es.: se n = 4, si codificano i numeri {–7, –6, ..., +6, +7} 29 Codifica binaria dei numeri interi: segno e valore 30 Codifica binaria dei numeri interi: segno e valore Con quale configurazione degli n bit si codifica ogni numero in {–(2n-1 – 1), ..., +2n-1 – 1}? Esempio: n = 3 Rappresentazione in base due Codifica binaria (il bit a sinistra codifica il segno) Per convenzione, il bit di segno è quello più a sinistra. Per codificare il valore assoluto, tra tutte le configurazioni a disposizione si sceglia la stessa della codifica dei numeri naturali: il valore assoluto di ogni numero viene codificato con la sequenza di n – 1 bit corrispondente alle n -1 cifre meno significative della sua rappresentazione in base due 31 -3dieci = -11due 111 -2dieci = -10due 110 -1dieci = -1due = -01due 101 -0dieci = -0due = -00due 100 +0dieci = +0due = +00due 000 +1dieci = +1due = +01due 001 +2dieci = +10due 010 +3dieci = +11due 011 32 Codifica binaria dei numeri interi: complemento a due Codifica binaria dei numeri interi: segno e valore Nota: il valore zero è codificato con due sequenze diverse, corrispondenti a –0 e +0 – – si “spreca” una configurazione, che potrebbe invece essere usata per codificare un numero all'esterno dell'intervallo {–(2n-1 – 1), ..., +2n-1 – 1}, per es. –2n-1 oppure +2n-1 Con n bit si sceglie di codificare i 2n valori nell'insieme {–2n–1, ..., +2n–1 – 1} (si aggiunge il valore –2n rispetto alla codifica in segno e valore). La codifica è definita come segue: – i 2n–1 valori non negativi {0, 1, ..., +2n–1 – 1} vengono codificati come nella codifica in segno e valore; in particolare, lo zero viene associato alla sequenza di n bit 0...0 (quindi il valore del bit più a sinistra è sempre 0) – ogni valore negativo X $ {–2n–1, ..., –2, – 1} viene codificato con la sequenza di n bit corrispondenti alle n cifre meno significative del numero X' definito come segue: X' = 2n – |X| Poiché X $ {-2n–1, ..., –2, –1}, ne consegue che X' $ {2n–1, ..., 2n – 1}. Quindi il valore del bit più a sinistra della codifica (cioè la n-esima cifra da destra di X') è sempre 1 dal punto di vista pratico, la doppia rappresentazione dello zero richiede una maggiore complessità nei circuiti che eseguono operazioni aritmetiche nei calcolatori (nella ALU) La complessità dei circuiti della ALU può essere ridotta anche scegliendo in modo diverso la codifica dei numeri positivi e negativi. La scelta più efficiente è quella che si effettua nella codifica in complemento a due 33 Codifica binaria dei numeri interi: complemento a due 34 Codifica binaria dei numeri reali: virgola fissa Esempio: n = 3 È analoga alla codifica in segno e valore per i numeri interi. Con n bit si codificano separatamente Rappresentazione in base due Codifica binaria -4dieci = -100due X' = 8-4 = 4dieci = 100due 100 -3dieci = -11due X' = 8-3 = 5dieci = 101due 101 -2dieci = -10due X' = 8-2 = 6dieci = 110due 110 -1dieci = -1due X' = 8-1 = 7dieci = 111due 111 0dieci = 0due = 00due come in segno e valore: 000 +1dieci = +1due come in segno e valore: 001 +2dieci = +10due come in segno e valore: 010 +3dieci = +11due come in segno e valore: 011 – il segno (un bit, per convenzione quello più a sinistra) – il valore assoluto della parte intera (p bit, per convenzione quelli successivi al bit di segno) – il valore assoluto della parte frazionaria (q bit, per convenzione quelli più a destra) I valori di p e q vengono scelti tra quelli che soddisfano l'uguaglianza 1 + p + q = n 35 36 Codifica binaria dei numeri reali: virgola fissa ! ! Codifica binaria dei numeri reali: virgola fissa Parte intera: con p bit si possono codificare 2p valori. Si scelgono i valori nell'insieme {0, 1, ..., 2p – 1}. I numeri reali la cui parte intera sia al di fuori di tale intervallo (in valore assoluto) non possono essere codificati Parte frazionaria: con q bit si codificano le q cifre frazionarie più significative (quelle con peso maggiore, quindi le prime q dopo la virgola). Se ci sono altre cifre frazionarie diverse da 0, vengono trascurate (il numero viene approssimato per troncamento della parte frazionaria) Esempi: n = 12, p = 5, q = 6 ! +12,625dieci = +1100,101due – bit di segno: 0 parte intera: 1100due = 01100due. Codifica: 01100 – parte frazionaria: 0,101due = 0,101000due. Codifica: 101000 – Codifica di +12,625dieci: 0 01100 101000 ! -7,125dieci = -111,001due – bit di segno: 1 parte intera: 111due = 00111due. Codifica: 00111 – parte frazionaria: 0,001due = 0,001000due. Codifica: 001000 – Codifica di -7,125dieci: 1 00111 001000 37 Codifica binaria dei numeri reali: virgola fissa Codifica binaria dei numeri reali: virgola fissa La codifica in virgola fissa di numeri con valore assoluto molto grande richiede un numero di bit molto elevato. Es.: la massa del sole in grammi è pari a circa 2#10+33 & 2+111; questo richiederebbe p ! 112 bit solo per codificare la parte intera Esempi: n = 12, p = 5, q = 6 ! +23,5078125dieci = +10111,1000001due – – bit di segno: 0 parte intera: 10111due. Codifica: 10111 Analogamente, numeri con valore assoluto molto piccolo sarebbero approssimati con zero se il numero q di bit per la codifica della parte frazionaria non fosse sufficiente. Es.: la massa dell'elettrone in grammi è pari a circa 9#10-28 & 2-90; questo richiederebbe p ! 90 bit per evitare di approssimare con zero tale numero parte frazionaria: 0,1000001due. Codifica: 100000 (approssimazione alle prime sei cifre frazionarie) Codifica di +12,625dieci: 0 10111 100000 – ! -56,25dieci = -111000,01due – – 38 Per poter codificare entrambi i numeri negli esempi di sopra sarebbero necessari almeno 1+112+90 = 203 bit: le celle di memoria degli attuali calcolatori ne contengono molti di meno! bit di segno: 0 parte intera: 111000due. Richiede almeno sei bit, mentre quelli a disposizione sono cinque: il numero -56,25dieci non può essere codificato 39 40 Codifica binaria dei numeri reali: virgola mobile Codifica binaria dei numeri reali: virgola mobile Per evitare gli inconvenienti della codifica in virgola fissa, nei calcolatori si usa una codifica basata sulla rappresentazione dei numeri reali in notazione esponenziale (usata comunemente in fisica, chimica, ecc.) Ogni numero reale può essere espresso in notazione esponenziale in infiniti modi. Es.: +12,625 = +12,625#100 = +0,12625#10+2 = +1262,5#10-2 = +0,00012625#10+5 = +126.250,0#10-4 = ... Ogni numero reale X può essere espresso in notazione esponenziale come M#BE, dove – M è un numero reale, detto mantissa – B è un numero naturale maggiore di 1, detto base – E è un numero intero, detto esponente Le scelte più “comode” sono quelle che richiedono il minor numero di cifre pari a 0 prima o dopo la virgola, in quanto consentono di rappresentare un dato valore con il minor numero possibile di cifre per la mantissa. Nell'esempio precedente, +0,12625#10+2 è preferibile a +0,00012625#10+5 Nella pratica si usa comunemente B = 10. Es.: le masse del sole e dell'elettrone negli esempi precedenti sono espresse in notazione esponenziale con B = 10 41 Codifica binaria dei numeri reali: virgola mobile Codifica binaria dei numeri reali: virgola mobile La codifica in virgola mobile è definita come segue ! – sfrutta la rappresentazione in notazione esponenziale di numeri espressi in base due – usa un valore predefinito per B (di norma B=2), che quindi non deve essere codificato – si codificano separatamente ! ! ! – 42 il segno (un bit) ! il valore assoluto della mantissa, M (p bit, per convenzione quelli successivi al bit di segno) l'esponente, E (q bit, per convenzione quelli più a destra) per codificare la mantissa con il minor numero possibile di bit, si sceglie l'unica rappresentazione in cui la parte intera di M sia pari a 1: in questo modo devono essere codificate solo le cifre frazionarie di M 43 Codfica della mantissa: con p bit si codificano le q cifre frazionarie più significative di M (quelle con peso maggiore, quindi le prime q dopo la virgola). Se ci sono altre cifre frazionarie diverse da 0, vengono trascurate (il numero viene approssimato per troncamento della parte frazionaria) Codifica dell'esponente: con q bit possono codificare 2q valori. Una possibile scelta è la codifica in complemento a due con q bit, che consente di codificare i valori nell'insieme {-2q-1, ..., 2q-1 – 1}. I numeri reali espressi in base due in notazione esponenziale con B=2 e parte intera di M pari a 1, il cui esponente sia al di fuori di tale insieme, non possono essere codificati 44 Codifica binaria dei numeri reali: virgola mobile Codifica binaria dei numeri reali: virgola mobile Esempi: n = 12, p = 5, q = 6 ! +12,625 = +1100,101due = +1,100101#10+11due dieci – – – Esempi: n = 12, p = 5, q = 6 ! – bit di segno: 0 mantissa: 1,100101due. Codifica: 10010 (si troncano le cifre frazionarie oltre la quinta) esponente: +11due. Codifica (compl. a due su 6 bit): 000011 – – -7,125dieci = -111,001due = -1,11001#10+10due – bit di segno: 1 mantissa: 1,11001due. Codifica: 11001 – esponente: +10due. Codifica (compl. a due su 6 bit): 000010 – bit di segno: 0 mantissa: 1,01111000001due. Codifica: 01111 (si troncano le cifre frazionarie oltre la quinta) esponente: +100due. Codifica (compl. a due su 6 bit): 000100 Codifica di +23,5078125dieci: 0 01111 000100 Codifica di +12,625dieci: 0 10010 000011 ! +23,5078125dieci = +10111,1000001due = +1,01111000001#10+100due ! -56,25dieci = -111000,01due = -1,1100001#10+101due – – – Codifica di -7,125dieci: 1 11001 000010 Codifica di -56,25dieci: 1 11000 000101 45 Codifica binaria dei numeri reali: virgola mobile bit di segno: 1 mantissa: 1,1100001due. Codifica: 11000 (si troncano le cifre frazionarie oltre la quinta) esponente: +101due. Codifica (compl. a due su 6 bit): 000101 46 Codifica di informazioni non numeriche Esempi: n = 12, p = 5, q = 6 ! ! +8.589.934.592,125dieci = (2 +33 + 0,125)dieci ! = +1,00...001#10+100001due (la parte frazionaria della mantissa contiene 33 '0' prima dell'unico '1') – – – ! ! caratteri immagini suoni ... bit di segno: 0 mantissa: 1,00...001due. Codifica: 00000 (si troncano le cifre frazionarie oltre la quinta) esponente: +100001due (= +33dieci). Tale valore non può però essere codificato in complemento a due con 6 bit (l'insieme dei valori codificabili è infatti {-25, ..., 25 – 1} = {-32, ..., +31}), quindi l'intero numero non può essere codificato in virgola mobile con q = 6 bit per l'esponente 47 48 Codifica dei caratteri ! ASCII (American Standard Code for Information Interchange) – – ! ! Codifica delle immagini Idealmente sono formate da infiniti punti, ciascuno dei quali può assumere un numero infinito di colori standard: 7 bit per carattere (27=128 caratteri diversi) es.: ‘A’ " 1000001 – campionamento spaziale: “griglia” rettangolare di m#n elementi (pixel, dal termine picture element), ciascuno dei quali viene rappresentato con uno stesso colore – quantizzazione: si codifica un sottoinsieme finito dei possibili colori di ogni pixel 8 estesa: 8 bit (2 =256 caratteri diversi) EBCDIC (Extended Binary-Coded Decimal Interchange Code). Sviluppata da IBM, 8 bit per carattere UNICODE: 16 bit per carattere (216=65.535 caratteri diversi) – consente di rappresentare caratteri di diversi alfabeti (greco, cirillico, ecc.) – i primi 128 caratteri del codice UNICODE coincidono con i 128 caratteri del codice ASCII Caratteristiche delle immagini: – dimensione: numero di pixel che la compongono (numero di righe e colonne della “griglia”, m e n) – profondità: numero di bit necessari per codificare i colori 49 Codifica delle immagini ! Codifica delle immagini Codifica dei colori Formati di codifica delle immagini – bianco e nero: due valori per pixel (0 = nero, 1 = bianco, o viceversa) – livelli di grigio (> 2): n bit per pixel (tipicamente 256 livelli di grigio, codificabli con 8 bit) – modelli di colore ! Red, Blue, Green (RGB): intensità dei tre colori per ogni pixel (tipicamente 256 livelli per ogni colore, codificabli ciascuno con 8 bit: quindi 24 bit per pixel) ! Cyan, Magenta, Yellow, Black (CMYK) ! Hue, Saturation, Value (HSV) ! ... 50 – senza perdita di informazione (lossless) ! – ! PNG (PortableNetwork Graphic): simile al GIF ! TIFF (Tagged Image Format File): adatto per la stampa fotografica ! ... con perdita di informazione (lossy): consentono di ridurre il numero di bit per la codifica di una stessa immagine, riducendone la qualità percepita dall'occhio umano ! ! 51 GIF (Graphic Interchange Format): adatto per immagini di piccole dimensioni e con pochi colori (non per le fotografie) JPEG (Joint Photographic Expert Group): adatto per immagini fotografiche o con “toni continui” ... 52 Codifica di dati non numerici: esercizio Codifica di dati non numerici: esercizio Una soluzione consiste nel codificare separatamente lo stato (acceso o spento) di ogni segmento. Per questo è sufficiente un bit (per es.: 0 = spento, 1 = acceso). Lo stato dell'intero display sarà quindi codificato da una sequenza di sette bit. È inoltre necessario specificare a quale segmento corrisponda ogni bit della sequenza: una possibile scelta è indicata in figura. In questo modo la configurazione corrispondente alla cifra '2' sarà codificata dalla sequenza 1110110 Il display a sette segmenti è un dispositivo (usato per esempio negli orologi al quarzo) che consente di visualizzare le dieci cifre decimali e alcuni caratteri alfabetici per mezzo dell'accensione e dello spegnimento di ciascuno dei sette segmenti (in figura è mostrata la configurazione corrispondente alla cifra '2': i segmenti accesi sono indicati in nero). Come possono essere codificate in binario le configurazioni che possono essere assunte dal display a sette segmenti? 53 Codifica di dati non numerici: esercizio Come possono essere codificate in binario le configurazioni che possono essere assunte dalla “scacchiera” del gioco del Tris? Una soluzione è la seguente. Lo stato di ogni casella può essere codificato separatamente. Gli stati possiibli sono tre: la casella può essere vuota, può contenere un 'X', oppure un 'O'. Per ogni casella sono quindi necessari almeno due bit (per es.: 00 = vuota, 01 = 'X', 10 = 'O'; il valore 11 non è usato). La configurazione di tutte le nove caselle sarà quindi codificata da una sequenza di diciotto bit. Per es., nella sequenza le caselle possono essere ordinate da sinistra a destra e dall'alto in basso. La configurazione in figura sarà allora codificata dalla sequenza 10 01 10 00 00 01 00 00 10. 55 54