CODIFICA DELLE INFORMAZIONI -...
Transcript of CODIFICA DELLE INFORMAZIONI -...
CODIFICA DELLE INFORMAZIONI
Prof. Marco Camurri
Prof. Marco Camurri 2
Argomenti
● Sistemi di numerazione
conversioni tra i sistemi decimale, binario ed esadecimale
● Codifica dei numeri interi senza segno
codifica binaria, codifica BCD
● Codifica dei numeri interi con segno
modulo e segno, complemento a due, condizioni di overflow
● Codifica dei numeri frazionari
virgla fissa e virgola mobile, standard IEEE-754
● Codifica dei colori e dell immagini
formato RGB, compressione lossy e lossless
● Codifica dei caratteri
ASCII a 7 bit, codiifiche ASCII estese, Unicode (UTF-32,UTF-16,UTF-8)
● Codifica dei suoni
Prof. Marco Camurri 3
Codifica delle informazioni
● Le memorie dei computer sono in grado di memorizzare sequenze di due soli simboli, che chiamiamo 0 e 1
● 0 e 1 sono dette cifre binarie o bit (binary digit)
● Vogliamo memorizzare informazioni varie: numeri, lettere, immagini, suoni, pagine web, programmi
● Ci serve un modo per rappresentare tutte queste informazioni come sequenze di 0 e 1
● Dobbiamo stabilire una codifica dei dati
● Lo stesso insieme di simboli (es. alfabeto latino) può essere rappresentato usando diverse codifiche!
Prof. Marco Camurri 4
Codifica dei numeri interi senza segno
● Interi senza segno = interi maggiori o uguali a 0
● Un modo naturale per codificare gli interi senza segno è utilizzare la loro rappresentazione in base due
● i numeri così rappresentati si dicono codificati in binario
● Nota: la codifica binaria non è l'unica codifica per numeri interi usata in informatica, ma è sicuramente la più utilizzata negli attuali computer
● Un'alternativa è la codifica BCD (binary-coded decimal) che vedremo più avanti
Prof. Marco Camurri 5
Sistemi di numerazione
● Tutti sappiamo rappresentare i numeri nel sistema di numerazione in base 10
i 10 simboli del sistema decimale (cifre decimali)
0 1 2 3 4 5 6 7 8 9
● Pechè usiamo la base 10?
Prof. Marco Camurri 6
Esempio: contiamo in base 4
● Se avessimo 2 dita per mano, conteremmo in base 4 ?
● ..avremmo a disposizione solo 4 simboli: 0 1 2 3
0123
10111213
2021222330
12(10) = 30(4)
Prof. Marco Camurri 7
Notazione della base
12(10) = 30(4)
Attenzione: 12(10) e 30(4) sono due modi diversi di rappresentare la stessa quantità ( stesso numero di palline !)
L'indicazione della base è omessa quando la base è 10 oppure se la base è chiara dal contesto
Prof. Marco Camurri 8
Esercizio
Esprimere tutti i numeri da 0 a 10 nelle basi 3, 4, 5, 6, 7
base 10 base 3 base 4 base 5 base 6 base 7
0 0 0 0 0 0
1 1 1 1 1 1
2 2 2 2 2 2
3 10 3 3 3 3
4 11 10 4 4 4
5 12 11 10 5 5
6 20 12 11 10 6
7 21 13 12 11 10
8 22 20 13 12 11
9 30 21 14 13 12
10 31 22 20 14 13
Prof. Marco Camurri 9
Sistema di numerazione posizionale in base 10
● Sistema di numerazione posizionale = sistema in cui il valore associato a una cifra dipende dalla posizione che essa occupa nella rappresentazione del numero.
Esempio:
595 = 5×102 + 9×101 + 5×100
baseposizione 0 (cifra meno significativa)
posizione 1
posizione 2 (cifra più significativa)
Prof. Marco Camurri 10
Numerazione in base 2
● Il sistema di numerazione binario funziona come quello in base 10, ma abbiamo a disposizione due soli simboli!
cifre binarie (bit)0 1
1 0 1(2)
= 1×22+0×21+1×20 = 5 (10)
22 21 20
● Esempio
Prof. Marco Camurri 11
Numerazione in base 2
DEC BIN
0 0
1 1
2 10
3 11
4 100
5 101
DEC BIN
6 110
7 111
8 1000
9 1001
10 1010
11 1011
DEC BIN
12 1100
13 1101
14 1110
15 1111
16 10000
... ...
Prof. Marco Camurri 12
Conversione da base 10 a base N
● Per ottenere la rappresentazione in base N di un numero espresso in base 10 si utilizza un algoritmo basato su divisioni successive per la base N.
● Ad esempio, per convertire un numero da base 10 a base 2 occorre eseguire una serie di divisioni per 2 annotando quozienti e resti (vedi esempio)
44 (10)
= ............... (2)
● Esempio: ottenere la rappresentazione in base 2 del numero 44
(10).
?
Prof. Marco Camurri 13
Conversione da base 10 a base 2
44
22 0
11 0
5 1
2 1
1 0
0 1
44 (10)
= .......................... (2)
1 0 1 1 0 0
quozienti resti
Il procedimento termina quanto si ottiene 0 nella colonna dei quozienti (e quindi 1 come ultimo resto).
Attenzione a ricopiare i resti nell'ordine giusto: l'ultimo resto corrisponde alla cifra più significativa!!!
Prof. Marco Camurri 14
Conversioni da sistema binario a decimale
● Per passare dalla rappresentazione in base 2 a quella in base 10, si moltiplica ogni cifra binaria per la potenza di due corrispondente alla posizione della cifra
● Alla cifra meno significativa corrisponde la potenza 20 , che vale 1.
● Esempio: convertire 101001(2)
in base 10
1 0 1 0 0 1(2)
= 1×25+0×24+1×23+0×22+0×21+1×20
= 32 + 0 + 8 + 0 + 0 + 1 = 41 (10)
25 24 23 22 21 20
Prof. Marco Camurri 15
Trucchi e scorciatoie in binario..
● I numeri pari finiscono per 0 e i dispari per 1
● Aggiungere uno zero a destra equivale a moltiplicare per 2:
11 = 3 110 = 6 1100 = 12
● Un 1 seguito da N zeri corrisponde a 2N:
1000 = 23 10000 = 24
● Una sequenza di N 1 consecutivi corrisponde a 2N-1:
111 = 23-1 = 7 1111=24-1 = 15
Prof. Marco Camurri 16
Potenze di due
20 = 121 = 222 = 423 = 824 = 1625 = 3226 = 6427 = 12828 = 25629 = 512210 = 1024
Da sapere!
Prof. Marco Camurri 17
Unità di misura
1 byte = 8 bit 1 nibble = 4 bit
Kilo 1 KB = 1024 byte = 210 byte circa mille byte
Mega 1 MB = 1024 KB = 220 byte circa 1 milione di byte Giga 1 GB = 1024 MB = 230 byte circa 1 miliardo di byte Tera 1 TB = 1024 GB = 240 byte
Esercizio: a quanti KB corrispodono 216 byte ?
Soluzione: 216 = 26×210 = 64 KB
Prof. Marco Camurri 18
Range di valori rappresentabili
● Esempio: configurazioni di 2 bit --> 00 01 10 11
● Con N bit è possibile rappresentare, tramite la codifica binaria, tutti i numeri interi senza segno da 0 a 2N-1
● Con 1 byte (8 bit) è possibile rappresentare tutti i numeri interi da 0 a 255 (256 valori)
● Con 2 byte (16 bit) il range si estende da 0 a 216-1 = 65535 (216 valori diversi)
Poichè N bit producono 2N diverse combinazioni, essi consentono di codificare al più 2N valori diversi (numeri, lettere, colori, ...).
Poichè N bit producono 2N diverse combinazioni, essi consentono di codificare al più 2N valori diversi (numeri, lettere, colori, ...).
Range = intervallo
Prof. Marco Camurri 19
Esercizi
Es 1 Convertire i seguenti numeri da base 10 a base 2:
a) 108b) 250c) 70d) 80e) 95f) 38
g) 63h) 126i) 47j) 256k) 2048l) 513
Es 2 Convertire i seguenti numeri da base 2 a base 10:
m) 1100n) 10101o) 00111111p) 111000q) 101011r) 100000000
s) 10001t) 10111u) 10000v) 1111w) 11111x) 100000
SOLUZIONI: a) 1101100 b) 11111010 c) 1000110 d) 1010000 e) 1011111 f) 100110 g) 111111 h) 1111110 i) 101111 j) 100000000 k) 100000000000 j) 1000000001m) 12 n) 21 o) 63 p) 56 q) 43 r) 256 s) 17 t) 23 u) 16 v) 15 w) 31 x) 32
Prof. Marco Camurri 20
Esercizi risolti
a) 108(10)
= ..?.. (2)
10050 025 012 16 03 01 10 1
Procedimento: 108(10)
= 1 1 0 0 1 0 0 (2)
ricopio a partire dal basso ( cifra più significativa )
mi fermo quando il quoziente è zero
Risultato:
100 diviso 2 fa 50 resto 0
50 diviso 2 fa 25 resto 0
25 diviso 2 fa 12 resto 1
Prof. Marco Camurri 21
Aritmetica binaria
● Le operazioni in colonna fra numeri binari seguono lo stesso algoritmo già noto per il sistema decimale!
● Per la somma in colonna basta ricordare che:
0 + 0 = 0 1 + 0 = 0 0 + 1 = 0 1 + 1 = 0 con riporto di 1 1 + 1 + 1 = 1 con riporto di 1
Prof. Marco Camurri 22
Aritmetica binaria
1 1 0 1 1 1 0 0 1 1 0 0 1 1 0 1 + 1 1 0 1 1 1 0 0 =
1 1 0 1 0 1 0 0 1
205 +220 =
425
28 +27 +25 +23 +20 = 256 +128 +32 +8 +1 = 425
Esempioriporti
riportoin uscita(Carry Out )
Prof. Marco Camurri 23
Un circuito sommatore a 4 bit
0 1 0 1 0 1 1 1
0 1 1 0 0Out3 Out2 Out1 Out0
A3B3
Carry Out
A2B2 A1B1 A0B0
Prof. Marco Camurri 24
Codifica BCD
● La codifica BCD (binary-coded decimal) è un' alternativa alla codifica binaria vista in precedenza
● Nella versione packed BCD, prevede di rappresentare ogni cifra decimale con 4 bit
Esempio: rappresentare il numero 254 in formato packed BCD e in formato binario
Codifica BCD 0000 0010 0101 0100 0 2 5 4
2 byte
1 byteCodifica binaria 1111 1110
Prof. Marco Camurri 25
BCD vs Binary
● Nella codifica BCD solo 10 delle 16 possibili configurazioni di 4 bit sono utilizzate
● A parità di bit utilizzati, quindi, la codifica binaria consente di rappresentare un range più ampio
Codifica Range
Binaria (2 byte) 0 ... 65535
BCD (2 byte) 0 ... 9999
● BCD semplifica la visualizzazione dei numeri su display
Prof. Marco Camurri 26
Esercizi
● Es 1. Codifica i seguenti numeri in formato BCD
a) 96 [ 10011100 ]
b) 10 [ 10100000 ]
c) 35 [ 11000101 ]
Prof. Marco Camurri 27
Il sistema esadecimale (HEX)
● Il sistema di numerazione in base 16 è detto sistema esadecimale (hexadecimal number system)
● Usa 16 simboli diversi (cifre esadecimali):
0 1 2 3 4 5 6 7 8 9 A B C D E F
● La cifra A rappresenta il numero decimale 10● La cifra B rappresenta il numero decimale 11● La cifra C rappresenta il numero decimale 12● La cifra D rappresenta il numero decimale 13● La cifra E rappresenta il numero decimale 14● La cifra F rappresenta il numero decimale 15
10 11 12 13 14 15
Prof. Marco Camurri 28
Conversione da Hex a Dec
● Per passare da esadecimale a binario, si moltiplica il valore di ogni cifra per la potenza di 16 corrispondete
Esempio
A37E(h)
= ........... (10)
?A 10↔B 11↔C 12↔D 13↔E 14↔F 15↔
14×160 +
7×161 +
3×162 +
10×163 =
41854
Prof. Marco Camurri 29
Decimale – Binario – Esadecimale
Dec Bin Hex
0 0 0
1 1 1
2 10 2
3 11 3
4 100 4
5 101 5
6 110 6
7 111 7
8 1000 8
9 1001 9
10 1010 A
11 1011 B
12 1100 C
13 1101 D
14 1110 E
15 1111 F
Dec Bin Hex
16 10000 10
17 10001 11
18 10010 12
19 10011 13
20 10100 14
21 10101 15
22 10110 16
23 10111 17
24 11000 18
25 11001 19
26 11010 1A
27 11011 1B
28 11100 1C
29 11101 1D
30 11110 1E
31 11111 1F
Dec Bin Hex
32 100000 20
33 100001 21
.. ... ...
48 110000 30
... ... ...
64 1000000 40
65 1000001 41
66 1000010 42
... ... ...
126 1111110 7E
127 1111111 7F
128 10000000 80
... ... ...
253 11111101 FD
254 11111110 FE
255 11111111 FF
Prof. Marco Camurri 30
Notazioni
● Per indicare che un numero è espresso in base 16 si fa seguire il numero dal suffisso h
● In molti linguaggi di programmazione (C/C++, Java, ..) è possibile far precedere il numero dal prefisso 0x
Esempio:
il numero 42(16) si può indicare come 42h o 0x42
● Nota: 42h è diverso da 42 !!!
42h = 4*16 + 2 = 64 + 2 = 66
Prof. Marco Camurri 31
Perchè gli informatici usano l'HEX ?
BIN HEX↔0000 0↔0001 1↔0010 2↔0011 4↔0100 4↔0101 5↔0110 6↔0111 7↔1000 8↔1001 9↔1010 A↔1011 B↔1100 C↔1101 D↔1110 E↔1111 F↔
● Ad ogni possibile configurazione di 4 bit corrisponde esattamente 1 cifra esadecimale
● Con due cifre esadecimali si rappresenta in modo compatto il contenutodi un byte di memoria:
01101011 ↔ 6B
4 bit (nibble)
1 cifra esadecimale
x xxx x
Prof. Marco Camurri 32
Immagini della memoria
Il cotenuto di questo byte è
E8 = 1110 1000
E 8
L'esadecimale è spesso usato per rappresentare il contenuto di una memoria (memory dump)
cella di memoria di un byte,
contenente il valore 8B
Prof. Marco Camurri 33
Perchè gli informatici usano l'HEX?
● la notazione esadecimale è più compatta di quella decimale e binaria (servono meno cifre per rappresentare lo stesso numero)
● usando una sola cifra esadecimale si rappresentano tutte le 16 possibili configurazioni di 4 bit (mezzo byte ), ovvero i valori decimali da 0 a 15
● usando solo due cifre esadecimali si rappresentano tutte le 256 possibili configurazioni di 8 bit (un byte) ovvero i valori da 0 a 255
● poichè 16 è una potenza di 2, le conversioni da base 16 a base 2 e viceversa sono estremamente semplici
Prof. Marco Camurri 34
Aritmetica in esadicmale
● L'addizione segue lo stesso algoritmo già noto nel sistema decimale!
Esempi:
● 9 + 1 = A
● A + 1 = B
● A + 2 = C
● C + 3 = F
● E + 5 = 13h
Prof. Marco Camurri 35
Aritmetica esadecimale
0 0 1 0 A 0 2 B + 1 C F 3 =
B D 1 E
Esempio
riporti
Prof. Marco Camurri 36
Osservazioni
● Aggiungere uno zero alla destra di un numero esadecimale equivale a moltiplicare per 16(10)
Esempi: Ah = 10 A0h = 10*16 A00h = 10*16*16
● I numeri che terminano per zero sono quindi multipli di 16
Prof. Marco Camurri 37
Conversioni BIN ↔ HEX
● Per convertire da binario a esadecimale si raggruppano le cifre binarie a gruppi di 4 partendo da destra e si sostituisce ogni gruppo con la cifra esadecimale corrispondente
1 1 0 0 1 0 1 1 1 0( 2 )
= 3 2 E ( h )
E23
● Per convertire da hex a bin si sostiuisce ogni cifra esadecimale con la sequenza di 4 bit corrispondente.
Prof. Marco Camurri 38
Esercizi
Es 1 Convertire i seguenti numeri da base 2 a base 16:
Es 2 Convertire i seguenti numeri da base 16 a base 2
a) 10110111b) 11011001c) 111111111d) 101010e) 101110101f) 10000110
g) A3h) FAi) BEj) ABCk) D1Cl) FFE
Es 3 Convertire i seguenti numeri da base 16 a base 10m) A3n) FAo) BEp) ABCq) D1Cr) FFE
Soluzioni:
a)B7 b)D9 c)1FF d)2A e)175 f)86
g)1010 0011 h)1111 1010 i)1011 1110
j)1010 1011 1100 k)1101 0001 1100
l)1111 1111 1110 m)163 n)250 o)190
p)2748 q)3356 r)4094 s) DAh t) 101h u)10Ah v) 10000h w) A10Fh x) A1h
Es 5 Eseguire le seguenti sommes) A8h + 32h t) E1h + 20hu) F3h + 17hv) FFFFh + 1w) A01Bh + F4hx) 55h + 4Ch