Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoDaniele Carbone Modificato 9 anni fa
1
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Codifica binaria dell’informazione Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 11 Marzo 2014
2
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Come rappresento un pixel? 2 Il pixel è Il colore Come ottengo il verde? Con il formato RGB R: 91 G: 191 B: 33 PIXEL = {R, G, B}
3
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Tipi di dati strutturati: pixel struct pixel{ char G; char R; char B; }; 3
4
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Tipi di dati strutturati: pixel struct pixel{ char G; char R; char B; }; 4 Perché char??? Perché ci bastano! Aspettate la fine della lezione!
5
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Un obiettivo per domarli tutti… 5
6
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Un obiettivo per domarli tutti… 6
7
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONEObiettivi Rappresentazione dell’informazione Da decimale a binario Contiamo con i numeri binari Limiti della rappresentazione Complemento a due 7
8
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Codifica binaria 8 Claude Shannon nel 1948 nel paper: “A Mathematical Theory of Communication” Chi ha “inventato” il bit?
9
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Codifica binaria Alfabeto binario: usiamo dispositivi con solo due stati Alfabeto binario: usiamo dispositivi con solo due stati Problema: assegnare un codice univoco a tutti gli oggetti compresi in un insieme predefinito (e.g. studenti) Problema: assegnare un codice univoco a tutti gli oggetti compresi in un insieme predefinito (e.g. studenti) Quanti oggetti posso codificare con k bit: Quanti oggetti posso codificare con k bit: 1 bit 2 stati (0, 1) 2 oggetti (e.g. Vero/Falso) 2 bit 4 stati (00, 01, 10, 11) 4 oggetti 3 bit 8 stati (000, 001, …, 111) 8 oggetti … k bit 2 k stati 2 k oggetti Quanti bit mi servono per codificare N oggetti: Quanti bit mi servono per codificare N oggetti: k = log 2 N N ≤ 2 k k ≥ log 2 N k = log 2 N (intero superiore) Attenzione: ipotesi implicita che i codici abbiano tutti la stessa lunghezza Attenzione: ipotesi implicita che i codici abbiano tutti la stessa lunghezza 9
10
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Esempio di codifica binaria Problema: assegnare un codice binario univoco a tutti i giorni della settimana Problema: assegnare un codice binario univoco a tutti i giorni della settimana Giorni della settimana: Giorni della settimana: N = 7 k ≥ log 2 7 k = 3 Con 3 bit possiamo ottenere 8 diverse configurazioni: Con 3 bit possiamo ottenere 8 diverse configurazioni: Ne servono 7, quali utilizziamo? Quale configurazione associamo a quale giorno? Attenzione: ipotesi che i codici abbiano tutti la stessa lunghezza Attenzione: ipotesi che i codici abbiano tutti la stessa lunghezza 10
11
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE I giorni della settimana in binario (1) 3 bit 8 “gruppi” 2 bit 4 “gruppi” Lunedì Martedì Mercoledì Giovedì Venerdì Sabato Domenica Lunedì Martedì Mercoledì Giovedì Venerdì Sabato Domenica 1 bit 2 “gruppi” Lunedì Martedì Mercoledì Giovedì Venerdì Sabato Domenica Lunedì Martedì Mercoledì Giovedì Venerdì Sabato Domenica 11
12
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE I giorni della settimana in binario (2) 3 bit 8 “gruppi” 2 bit 4 “gruppi” Lunedì Martedì Mercoledì Giovedì Venerdì Sabato Domenica Lunedì Martedì Mercoledì Giovedì Venerdì Sabato Domenica 1 bit 2 “gruppi” Lunedì Martedì Mercoledì Giovedì Venerdì Sabato Domenica Lunedì Martedì Mercoledì Giovedì Venerdì Sabato Domenica 12
13
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Stampa dei caratteri 13
14
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Quale è il codice ASCII di ‘a’? 14 Siamo sicuri? Ma quindi, quanto vale ‘a’? 97, 353, 609 97, 353=97+256, 609=353+256=97+256+256
15
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Quale è il codice ASCII di ‘a’? 15
16
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Quale è il codice ASCII di ‘a’? 16 Siamo sicuri? Ma quindi, quanto vale ‘a’? 97, 353, 609 97, 353=97+256, 609=353+256=97+256+256 97 = 97 + 256*0 353 = 97+256*1 609 = 97+256*2
17
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 97+256*i… quindi… Quanti caratteri ci sono? 256 Con quanti bit rappresento 256 numeri? log 2 256 = log 2 2 8 = 8 17
18
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Codifica binaria dei caratteri Quanti sono gli oggetti compresi nell’insieme? Quanti sono gli oggetti compresi nell’insieme? 26 lettere maiuscole + 26 minuscole 52 10 cifre Circa 30 segni d’interpunzione Circa 30 caratteri di controllo (EOF, CR, LF, …) circa 120 oggetti complessivi k = log 2 120 = 7 Codice ASCII: utilizza 7 bit e quindi può rappresentare al massimo 2 7 =128 caratteri Codice ASCII: utilizza 7 bit e quindi può rappresentare al massimo 2 7 =128 caratteri Con 8 bit (= byte) rappresento 256 caratteri (ASCII esteso) Si stanno diffondendo codici più estesi (e.g. UNICODE) per rappresentare anche i caratteri delle lingue orientali 18
19
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE ASCII su 7 bit 0000000100100011010001010110011110001001101010111100110111101111 010sp!"#$%&'()*+,-./ 0110123456789:;<=>? 100@ABCDEFGHIJKLMNO 101PQRSTUVWXYZ[\]^_ 110`abcdefghIjklmno 111pqrstuvwxYz{|}~canc 19
20
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE bit, Byte, KiloByte, MegaByte, … bit = solo due stati, “0” oppure “1”. Byte = 8 bit, quindi 2 8 = 256 stati KiloByte [KB]= 2 10 Byte = 1024 Byte ~ 10 3 Byte MegaByte [MB]= 2 20 Byte = 1'048'576 Byte ~ 10 6 Byte GigaByte [GB]= 2 30 Byte ~ 10 9 Byte TeraByte [TB]= 2 40 Byte ~ 10 12 Byte PetaByte [PB]= 2 50 Byte ~ 10 15 Byte ExaByte [EB]= 2 60 Byte ~ 10 18 Byte 20
21
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Da Hobbit a Hobbyte 21
22
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Da Hobbit a Hobbyte 22
23
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Ora dovrebbe essere chiara 23
24
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Da base 10 a base 2 Dato un numero K rappresentato in base dieci, la sua rappresentazione in base due sarà del tipo b n b n-1 b n-2 … b 1 b 0 b i : cifra binaria Per convertire un numero in base dieci nel corrispondente in base due si devono trovare i resti delle divisioni successive del numero K per due 24
25
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Da base 10 a base 2 Esempio: il numero 6 10 : 6/2 = 3 resto 0 3/2 = 1 resto 1 1/2 = 0 resto 1 Leggendo i resti dal basso verso l’alto, si ha che la rappresentazione binaria del numero 6 10 è 110 2 Per una corretta verifica basta riconvertire il risultato alla base 10 Cioè, calcolare 1 x 2 2 + 1 x 2 1 + 0 x 2 0 25
26
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Da base 10 a base 2 Perché 110 2 = 6 10 ? 6/2 = 3 resto 00 x 2 0 + 3/2 = 1 resto 11 x 2 1 + 1/2 = 0 resto 1 1 x 2 2 = 6 1 x 2 2 + 1 x 2 1 + 0 x 2 0 = 1 x 2 1 + 1 x 2 0 con resto 0 2 1 x 2 1 + 1 x 2 0 = 1 x 2 0 con resto 1 2 1 x 2 0 = 0 con resto 1 2 26
27
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Da base 10 a base 2 Esempio: il numero 345 10 : 345/2 = 172 resto 1 172/2 = 86 resto 0 86/2 = 43 resto 0 43/2 = 21 resto 1 21/2 = 10 resto 1 10/2 = 5 resto 0 5/2 = 2 resto 1 2/2 = 1 resto 0 1/2 = 0 resto 1 Leggendo i resti dal basso verso l’alto Larappresentazione binaria del numero 345 10 è 101011001 2 27
28
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Altre basi: ottale, esadecimale Sistema ottale Utilizza una notazione posizionale basata su otto cifre (0,1,…,7) e sulle potenze di 8 Esempio: 103 8 = 1 x 8 2 + 0 x 8 1 + 3 x 8 0 = 67 Sistema esadecimale Utilizza una notazione posizionale basata su sedici cifre (0,1,…,9,A,B,C,D,E,F) e sulle potenze di 16 Esempio: 103 16 = 1 x 16 2 + 0 x 16 1 + 3 x 16 0 = 259 Esempio: AC4 16 = 10 x 16 2 + 12 x 16 1 + 4 x 16 0 = 2756 28
29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Operazioni su numeri binari Vediamo solo il caso della addizione nella codifica binaria: Si mettono in colonna i numeri da sommare Si calcola il riporto ogni volta che la somma parziale supera il valore 1 Addizione: 0 + 0 = 0 con riporto 0 0 + 1 = 1 con riporto 0 1 + 0 = 1 con riporto 0 1 + 1 = 0 con riporto 1 29
30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Operazioni su numeri binari Addizione: 0 + 0 = 0 con riporto 0 0 + 1 = 1 con riporto 0 1 + 0 = 1 con riporto 0 1 + 1 = 0 con riporto 1 Esempi: 1 + 1 = 1 0 1 0 1 + 1 1 = 1 0 0 0 1 0 1 1 0 1 0 1 + 1 0 0 0 1 1 0 = 1 1 1 1 1 0 1 1 1 1 1 + 1 1 = 1 0 30
31
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Codici a lunghezza fissa Se si usa un numero prestabilito di cifre si ha un codice a lunghezza fissa In questo modo si pone anche un limite al numero massimo rappresentabile Esempio: qual è il numero più grande rappresentabile con 4 cifre? In base 10:9999 In base 2:1111(=15 10 ) In base 16:FFFF(=65535 10 ) In base 8:7777(=4095 10 ) 31
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Il fattoriale Dato n, intero positivo, si definisce n fattoriale e si indica con n! il prodotto dei primi n numeri interi positivi minori o uguali di quel numero. In formule Nota: 0! = 1 1! = 1 2! = 2, 3! = 6,… 32
33
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Il fattoriale: codice 33
34
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Proviamo ad eseguirlo… 34
35
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Proviamo ad eseguirlo… 35
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Proviamo ad eseguirlo… 36
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Proviamo ad eseguirlo… 37
38
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Proviamo ad eseguirlo… 38 WAT
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Codici a lunghezza fissa Numeri maggiori di quello massimo rappresentabile causano problemi di overflow Ovvero per essere rappresentati richiedono più cifre di quelle a disposizione Esempio: 4 cifre In base 10:9999 + 1= 10000 10 In base 2:1111 + 1= 10000 2 (=16 10 ) In base 16:FFFF + 1= 10000 16 (=65536 10 ) In base 8:7777 + 1= 10000 8 (=4096 10 ) 39
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Codici a lunghezza fissa In generale, con N cifre a disposizione e base b il più grande numero (intero positivo) rappresentabile si può esprimere come b N – 1 Esempio: N=4 In base 10:9999 = 10 4 - 1 In base 2:1111 = 2 4 - 1 In base 16:FFFF = 16 4 - 1 In base 8:7777 = 8 4 - 1 40
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Codici a lunghezza fissa Esempio di overflow nel sistema binario dovuto a operazioni aritmetiche: 5 + 4 = 9 (in sistema decimale) abbiamo usato solo una cifra decimale per il risultato Ricordiamo: 5 10 = 101 2, 4 10 = 100 2 1 0 1 + 1 0 0 = 1 0 0 1 (in sistema binario) Errore: overflow (non può essere codificato 9 10 = 1001 2 con tre bit) 41
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Rappresentazione dei numeri Possiamo rappresentare i numeri usando un numero variabile di cifre (che dipende dal valore che si vuole rappresentare) Come? Introduciamo un simbolo speciale che indica dove termina la rappresentazione di un numero e inizia quella del numero successivo Esempio: 1001#11#1 (codice a lunghezza variabile, # separatore) Esistono anche “codici di espansione”, che permettono di definire dei codici a lunghezza variabile senza far uso del carattere di separazione 42
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Rappresentazione dei numeri In realtà, una semplice codifica binaria come quella discussa fino ad ora non è sufficiente, per due motivi: Numeri negativi Numeri con la virgola Per questi numeri vengono utilizzate delle rappresentazioni differenti Per esempio “complemento a due” per rappresentare i numeri negativi 43
44
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Numeri negativi Si può pensare di usare un bit per il segno “0” identifica “+” “1” identifica “-” Gli altri bit vengono usati per codificare il valore assoluto (modulo) del numero -3 -20 1234567 [-2 2 +1, 2 2 -1] [0, 2 3 -1] 44
45
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Numeri negativi - problemi Con 3 bit avremo: 000+0 001+1 010+2 011+3 100-0 101 110-2 111-3 Problemi: Il numero 0 ha due rappresentazioni Per l’operazione di somma si deve tener conto dei segni degli addendi 0 0 1 0 + (+2) 1 0 1 1 =(-3) 1 1 0 1(-5 ERRATO) 45
46
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Il fattoriale: codice 46
47
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Proviamo ad eseguirlo… 47 int sono interi con segno
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Il fattoriale: unsigned int 48
49
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Proviamo ad eseguirlo… 49 Ora solo overflow
50
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Numeri negativi: Complemento a due Il bit più significativo rappresenta il segno del numero: 0 per i numeri positivi e 1 per i numeri negativi La rappresentazione di un numero positivo si ottiene codificando il valore assoluto del numero con i bit restanti La rappresentazione di un numero negativo si ottiene in tre passi: Si rappresenta in complemento a due il numeri positivo con lo stesso valore assoluto del numero negativo da codificare Si invertono tutti i bit in tale rappresentazione (0 1,1 0) Si somma uno al risultato ottenuto al passo precedente 50
51
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Complemento a due Esempio (con 4 bit a disposizione): La codifica di +5 è 0101 La codifica del numero –5 avviene in tre passi: La rappresentazione in complemento a due di +5 è 0101 Invertendo tutti i bit si ottiene 1010 Sommando 1 si ottiene 1011, la rappresentazione in complemento a due di -5 51
52
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Complemento a due Per ottenere un numero con segno data la sua rappresentazione in complemento a due: Se il primo bit è 0 il numero è positivo: per calcolarne il valore assoluto si esegue la conversione da binario a decimale Se il primo bit è 1 il numero è negativo: Si ignora il primo bit Si invertono i restanti bit Si converte il numero da binario a decimale Si somma uno al numero ottenuto per ottenere il valore assoluto del numero negativo 52
53
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Complemento a due Esempio: 1011 Si esclude il primo bit Invertendo 011 si ottiene 100 che è codifica di 4 Va aggiunto 1 per ottenere il valore assoluto 5 Il risultato è quindi -5 53
54
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Complemento a due Con 3 bit avremo: 000+0 001+1 010+2 011+3 100-4 101-3 110-2 111 Esempi di addizione: 0 0 1 0 + (+2) 1 0 1 1 =(-5) 1 1 0 1(-3) 0 1 1 1 + (+7) 1 0 1 1 =(-5) 0 0 1 0(+2) Nel secondo esempio, l’overflow è ignorato 54
55
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE E ora.. Quanto fa 0,4 * 20? 55
56
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE E ora.. Quanto fa 0,4 * 20? 56
57
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE E ora.. Quanto fa 0,4 * 20? 57
58
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE E ora.. Quanto fa 0,4 * 20? 58 WATWAT
59
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Exe per casa… 59
60
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Exe 1: Codifica dell’informazione Quanti bit si devono utilizzare per rappresentare 300 informazioni distinte? Quanti byte occupa la parola “psicologia” se la si codifica utilizzando il codice ASCII? Dati 12 bit per la codifica, quante informazioni distinte si possono rappresentare? 60
61
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Exe 2: Codifica dei suoni Quanto spazio occupa un suono della durata di 30 secondi campionato a 100 Hz (100 campioni al secondo), in cui ogni campione occupa 4 byte? 61
62
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Exe 3: Codifica dei numeri Codificare il numero 175 10 nella corrispondente rappresentazione binaria Ordinare in modo crescente i seguente numeri: 105 10, 12 8, 100110000 2, 10011 10 Codificare il numero negativo –15 10 nella rappresentazione in complemento a due 62
63
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Exe 4: Codifica delle immagini Quanti bit occupa un’immagine di 100 x 100 pixel in bianco e nero? Quanti byte occupa un’immagine di 100 x 100 pixel a 256 colori? Se un’immagine a 16777216 di colori occupa 2400 byte, da quanti pixel sarà composta? 63
64
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Fonti per lo studio + Credits Fonti per lo studio Informatica arte e mestiere, S. Ceri, D. Mandrioli, L. Sbattella, McGrawHill Capitolo 11 Introduzione ai sistemi informatici, D. Sciuto, G. Buonanno, L. Mari, 4a Ed, McGrawHill Capitolo 2 The Art & Craft of Computing, S. Ceri, D. Mandrioli, L. Sbattella, Addison-Wesley Capitolo 13 Credits P. Spoletini J. Sproston 64
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.