Sei sulla pagina 1di 19

14/10/18

Codifica dell’informazione
o Il calcolatore memorizza ed elabora
vari tipi di informazioni
n Numeri, testi, immagini, suoni
o Occorre rappresentare tale
informazione in formato facilmente
manipolabile dall’elaboratore

Rappresentazione delle
informazioni

Idea di fondo
o usare presenza/assenza di carica elettrica
o usare passaggio/non passaggio di
corrente/luce

Usiamo cioè una rappresentazione binaria (a


due valori) dell’informazione

L’unità minimale di rappresentazione è il


BIT (BInary digiT – cifra digitale): 0 o 1

1
14/10/18

Informazioni complesse

Con 1 bit rappresentiamo solo 2 diverse


informazioni:
si/no - on/off - 0/1
Mettendo insieme più bit possiamo
rappresentare più informazioni:
00 / 01 / 10 / 11

Informazioni complesse si memorizzano


come sequenze di bit

Informazioni complesse
o Per codificare i nomi delle 4 stagioni
bastano 2 bit

o Ad esempio:
n 0 0 per rappresentare Inverno
n 0 1 per rappresentare Primavera
n 1 0 per rappresentare Estate
n 1 1 per rappresentare Autunno

o Quanti bit per codificare i nomi dei giorni


della settimana?

2
14/10/18

Informazioni complesse

In generale, con N bit, ognuno dei quali può


assumere 2 valori, possiamo rappresentare 2N
informazioni diverse (tutte le possibili
combinazioni di 0 e 1 su N posizioni)
viceversa
Per rappresentare M informazioni dobbiamo
usare N bit, in modo che 2N >= M

Esempio

Per rappresentare 57 informazioni


diverse dobbiamo usare gruppi di
almeno 6 bit. Infatti:
26 = 64 > 57
Cioè un gruppo di 6 bit può assumere
64 configurazioni diverse:
000000 / 000001 / 000010 …/ 111110 / 111111

3
14/10/18

Il Byte
oUna sequenza di 8 bit viene chiamata Byte
n00000000
n00000001
n .....
byte = 8 bit = 28 = 256 informazioni diverse

Usato come unità di misura per indicare


n le dimensioni della memoria
n la velocità di trasmissione
n la potenza di un elaboratore
Usando sequenze di byte (e quindi di bit) si possono
rappresentare caratteri, numeri immagini, suoni.

Altre unità di misura


o KiloByte (KB), MegaByte (MB), GigaByte (GB)
o Per ragioni storiche in informatica Kilo, Mega, e Giga
indicano però le potenze di 2 che più si avvicinano
alle corrispondenti potenze di 10
o Più precisamente
n 1 KB = 1024 x 1 byte = 210 ~ 103 byte
n 1 MB = 1024 x 1 KB = 220 ~ 106 byte
n 1 GB = 1024 x 1 MB =230 ~ 109 byte
o I multipli del byte vengono utilizzati come unità di
misura per la capacità della memoria di un
elaboratore

4
14/10/18

Il sistema decimale
o 10 cifre di base: 0, 1, 2, …, 9
o Notazione posizionale: la posizione di
una cifra in un numero indica il suo peso in
potenze di 10. I pesi sono:
n unità = 100 = 1 (posiz. 0-esima)
n decine = 101 = 10 (posiz. 1-esima)
n centinaia = 102 = 100 (posiz. 2-esima)
n migliaia = 103 = 1000 (posiz. 3-esima)
n … .. .. .. .. .. ...

Esempio di numero rappresentato


in notazione decimale

Il numerale 2304 in notazione decimale


(o in base 10) rappresenta la quantità:
2304 = 2*103 + 3*102 +0*101 + 4*100 =

2000 + 300 + 0 + 4 = 2304 (numero)


Nota: numero e numerale qui coincidono,
perché il sistema decimale e quello adottato
come sistema di riferimento.

5
14/10/18

Il sistema binario
o 2 Cifre di base: 0 e 1.
o Notazione posizionale: la posizione di una
cifra in un numero binario indica il suo peso in
potenze di 2. I pesi sono:
n 20 = 1 (posiz. 0-esima)
n 21 = 2 (posiz. 1-esima)
n 22 = 4 (posiz. 2-esima)
n 2 =8; 2 =16; 25=32; 26=64; 27=128;
3 4

28=256; 29=512; 210 = 1024; 211=2048,


212=4096;...

Esempio di numero rappresentato in


notazione binaria
Il numerale 10100101 in notazione binaria (o in
base 2) rappresenta la quantità:
10100101
1*27+0*26+1*25+0*24+0*23+1*22+0*21+1*20
128 + 0 + 32 + 0 + 0 + 4 + 0 + 1 =
165 (numero)

6
14/10/18

Il numero più grande


rappresentato con N cifre
o Sist. Decimale = 99…99 = 10N - 1

o Sist. Binario= 11..11 = 2N - 1


o Esempio: 11111111 (8 bit binari) = 28
-1 = 255. Per rappresentare il n. 256 ci
vuole un bit in più: 100000000 = 1*28 =
256.

Quindi…

Fissate quante cifre (bit) sono usate per


rappresentare i numeri, si fissa anche il
numero più grande che si può rappresentare:
n con 16 bit: 216 - 1 = 65.535
n con 32 bit: 232 - 1 = 4.294.967.295
n con 64 bit: 264 - 1 = circa 1,84 * 1019

7
14/10/18

Conversione da base 2 a base 10


Basta moltiplicare ogni bit per il suo peso e
sommare il tutto:
Esempio:
10100
1*24 + 0*23 + 1*22 + 0*21 + 0*20 =
16 + 4 = 20
la conversione e’ una somma di potenze
(N.B. se il numero binario termina per 1 e’ dispari
altrimenti e’ pari).

Conversione da base 10 a base 2


o Dividere il numero per 2 ripetutamente
finche` il risultato non e` 0
o Scrivere i resti in ordine inverso.
Esempio: conversione del numero 12
Divisioni: 12/2 = 6/2 = 3/2 = 1/2 = 0
Resti: 0 0 1 1
12 = 1100

8
14/10/18

Conversione da base 10 a base 2

Idea di fondo: usare le potenze di 2 che,


sommate, danno il numero N da convertire:
nPrendere le potenze di 2 <= di N nell’ordine
dalla più grande alla più piccola (cioè 20)
nAssociare il bit 1 alle potenze che vengono
usate nella somma per ricostruire N
nAssociare il bit 0 alle potenze non usate.

Esistono anche altre basi di


numerazione
o CODICE OTTALE
ncifre: 0, 1, 2, 3, 4, 5, 6, 7
n10 (ottale) = 8 (decimale)

o CODICE ESADECIMALE
ncifre: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
n10 (esadecimale) = 16 (decimale); B =
11; 2B=2*161+B*160 = 32+11 = 43

9
14/10/18

Rappresentazione di numeri
positivi e negativi
o Il bit più a sinistra rappresenta il segno del numero:
0 = ‘+’ 1 = ‘-’
1101 = -5
o E’ indispensabile indicare il numero N di bit utilizzati:
n 1 bit per il segno e N-1 bit per il modulo
o Con un byte possiamo rappresentare tutti i numeri
compresi tra
+127 (01111111) e –127 (11111111)
n In generale con N bit si rappresentano i valori da
- 2N-1 - 1 a +2N-1 - 1

Rappresentazione di numeri
positivi e negativi
Complemento a 2
o Se N sono i bit da utilizzare e x il numero da
rappresentare si utilizza il valore binario pari a
2N + x
Es. con 4 bit
+7 = 24 + 7 = 16 + 7 = 23 = 10111 = 0111
-7 = 24 - 7 = 16 - 7 = 9 = 1001

10
14/10/18

Complemento a 2

o Osserviamo inoltre come si comporta la somma di un numero binario e


del suo inverso: il risultato è una sequenza 111…1, che in
complemento a 2 rappresenta -1

o Abbiamo quindi:

Rappresentazione di numeri
positivi e negativi Complemento a 2

Per i numeri negativi possiamo quindi eseguire i seguenti passi:


n Si rappresenta in binario il corrispondente numero positivo
n Si invertono tutti i bit
n Si aggiunge 1

Es. con 4 bit il numero –7:


+72 =0111 => 1000+1=1001 = -72

11
14/10/18

Vantaggi del Complemento a 2


o Consente di avere un'unica rappresentazione
dello zero
n quando tutti i bit sono zero, eliminando così la
ridondanza dello zero che si verifica con la
rappresentazione in modulo e segno
o Soprattutto, consente di operare
efficientemente addizione e sottrazione sempre
avendo il primo bit a indicare il segno

Rappresentazione di numeri
frazionari in Virgola fissa

Un numero frazionario potrebbe essere rappresentato


come una coppia di numeri interi: la parte intera e la
parte decimale.

12,52 <12; 52>


<1100; 110100>

12
14/10/18

Numeri in virgola mobile


(Floating point)
Idea: 12,52 = 1252/100 = 1252 * 10-2
Un numero decimale è rappresentato come un
intero moltiplicato per una opportuna potenza di
10, cioè con una coppia:
<1252; -2>
mantissa esponente

Numeri floating point


E’ necessario stabilire quanti bit assegnare
alla mantissa e all’esponente.
Ad esempio, con 16 bit a disposizione
possiamo usarne 12 per la mantissa e 4 per
l’esponente
(in realtà dovremmo anche tener conto dei
segni)

13
14/10/18

Numeri floating point


Con lo stesso metodo possiamo
rappresentare numeri molto grandi. Ad
esempio, con 8 bit:
5 bit di mantissa: 11111 = 31
3 bit di esponente: 111 = 7
11111111 = 31 * 107 = 310 milioni
Mentre, con la notazione classica, con 8 bit
rappresentiamo al massimo il n. 255

Numeri floating point

Ma allora, perchè non usare sempre la


notazione floating point?
Perchè si perde in precisione
Esempio: 5 cifre (decimali) : 4 per la
mantissa, 1 per l’esponente.
Rappresentare
312,45
<3124; -1> = [312,4 .. 312,5]???

14
14/10/18

Numeri floating point


Quindi: possiamo rappresentare numeri
molto grandi o con molti decimali al
costo di una perdita di precisione
Perchè? Perchè i computer permettono
solo rappresentazioni finite, e così
dobbiamo approssimare alcuni numeri
(ad esempio gli irrazionali), ma anche
immagini e suoni

La Codifica dei Caratteri

15
14/10/18

Codici per i simboli dell’alfabeto

o Per rappresentare i simboli dell’alfabeto anglosassone (0


1 2 ... A B ... A b ...) bastano 7 bit
n Nota: B e b sono simboli diversi
n 26 maiuscole + 26 minuscole + 10 cifre + 30 segni di
interpunzione+… -> circa 120 oggetti

o Per l’alfabeto esteso con simboli quali &, %, $, ...


bastano 8 bit come nella codifica accettata
universalmente chiamata ASCII esteso
o Per manipolare un numero maggiore di simboli si utilizza
la codifica UNICODE a 16 bit

Codifica ASCII
ASCII (American Standard Code for
o La codifica
Interchange Code) utilizza codici su 7 bit
(27 = 128 caratteri diversi)
o Ad esempio
n 1 0 0 0 0 0 1 rappresenta A
n 1 0 0 0 0 1 0 rappresenta B
n 10 0 0 0 1 1 rappresenta C

o Le parole si codificano utilizzando sequenze di byte


n 1000010 1000001 1000010 1000001
B A B A

16
14/10/18

Altri codici di codifica

o ASCII ESTESO
n Usa anche il primo bit di ogni byte
n 256 caratteri diversi
n non è standard (cambia con la lingua usata)
o EBCDIC
n altro codice a 8 bit della IBM (quasi in disuso)

ASCII esteso

17
14/10/18

Numeri in ASCII

Le cifre 0..9 rappresentate in Ascii sono simboli o


caratteri NON quantità numeriche

Non possiamo usarle per indicare quantità e per


le operazioni aritmetiche. (Anche nella vita di
tutti giorni usiamo i numeri come simboli e non
come quantità: i n. telefonici)

UNICODE
o Incorpora la codifica ISO/IEC 8859-1, ma va molto oltre,
codificando i caratteri usati in quasi tutte le lingue vive e in
alcune lingue morte, nonché simboli matematici e chimici,
cartografici, l'alfabeto Braille, ideogrammi ecc.
o Originariamente pensato come una codifica a 16 bit (quattro
cifre esadecimali) che dava la possibilità di codificare 65.535
(216 -1) caratteri. Ora invece lo standard Unicode prevede una
codifica fino a 21 bit e supporta un repertorio di codici numerici
che possono rappresentare circa un milione di caratteri
o È anche previsto l'uso di codifiche con unità da 8 bit (byte), 16
bit (word) e 32 bit (double word), chiamate rispettivamente
UTF-8, UTF-16 e UTF-32.

18
14/10/18

Rappresentare immagini e suoni

o Per la codifica digitale di tali informazioni


occorrono due fasi (logicamente) distinte:
n trasformazione di un’informazione continua
in una collezione di informazioni discrete
n codifica approssimata delle informazioni
discrete
o Per approfondire, si consigliano le slide
introduttive a questo link

19