Codifica di Dati e Istruzioni
‰ Algoritmi
 Istruzioni che
h operano su dati
d
Fondamenti di Informatica
‰ Per scrivere un programma è necessario
rappresentare dati e istruzioni in un formato tale
che l’esecutore automatico sia in grado di
Codifica dell’Informazione


Prof. Francesco Lo Presti
Memorizzare istruzioni e dati
Manipolare istruzioni e dati
Codifica
Codifica dell’Informazione
Sistemi di Codifica
‰ La stessa informazione si può rappresentare in modi
‰ Sistema di codifica (o codifica, o codice)
 Usa un insieme di
d simboli
l di
d base (alfabeto
(alfabeto)
lf
)
 I simboli dell’alfabeto possono essere combinati
ottenendo differenti configurazioni (o codici, o stati),
distinguibili l’una dall’altra
 Associa ogni configurazione ad una particolare entità di
informazione (la configurazione
confi urazione diventa un modo per
rappresentarla)
differenti
diff
ti
11
10
10
9
8
7
6
2
‰ Stesso rappresentazione per informazioni
differenti
italiano
fare,…
inglese
tariffa, prezzo, …
fare
italiano
burro
spagnolo
burro,...
asino, cavalletto, somaro, …
Codifica
3
Codifica
4
Sistema di Codifica: Numeri Interi (Decimali)
Codifica Binaria
‰ Alfabeto
‰ Alfabeto binario: due simboli




Cifre “0”
0 , “1”
1 , “2”
2 , …, “9”
9
separatore decimale (“,”)
separatore delle migliaia (“.”)
Segni positivo ((“+”)
+ ) e negativo ((“-”))
‰ Utilizzata nei sistemi informatici
 Si utilizza una grandezza fisica (luminosità, tensione
elettrica la corrente elettrica),
elettrica,
elettrica) per rappresentare
informazione
‰ Regole di composizione (sintassi)


‰ BIT ((BInary
y digiT)
g )
 unità elementare di informazione rappresentabile con
dispositivi elettronici
Definiscono le combinazioni ben formate
12.318,43
9 123.1.8.43 ?
‰ Codice (semantica)


9 Due
Du ssoli
li stati
st ti
Associano ad ogni configurazione un’entità di informazione
12.318,43 = 1×
1×104+2
+2××103+3
+3××102+ 11××101+1
+1××100+4
+4××10-1+3
+3××10-2

‰ Lo stesso alfabeto può essere usato per codici
cod c diversi
d vers



123,456 = 1×
1×102+ 2
2××101+3
+3××100+4
+4××10-1+5
+5××10-2+6
+6××10-3 [IT]
5
4
3
2
123,456 = 11××10 + 2×
2×10 + 3×
3×10 + 4×
4×10 + 5×
5×101 + 6×
6×100 [UK]
Codifica
con 1 bit si possono rappresentare 2 stati
0/1,, on/off,
ff, si/no
5
Codifica
Codifica Binaria
Esempio di Codifica Binaria
‰ Quanti oggetti/entità si possono codificare con k
‰ Problema: assegnare un codice binario univoco a
bit?





t tti i giorni
tutti
i
id
della
ll settimana
tti
‰ Giorni della settimana: N=7, Ö k≥ log2N Ö k=3
1 bit Ö 2 stati {0,1} Ö 2 oggetti (e.g., Vero, Falso)
2 bit Ö 4 stati {00,01,10,11}
{00 01 10 11} Ö 4 oggetti
3 bit Ö 8 stati {000,001,010,…,111} Ö 8 oggetti
…
K bit Ö2k stati Ö 2k oggetti

C 3 bit,
Con
bit 8 configurazioni
fi
i i
‰ Possibile soluzione
 Lunedì
000
 Martedì
001
 Mercoledì
010
 Giovedì
011
 Venerdì
100
 Sabato
101
 Domenica
110
‰ Quanti bit servono per codificare N oggetti?
 N≤2k Ö k≥ log2 N Ö k= log2 N (intero superiore)
‰ Attenzione: Ipotesi implicita che i codici abbiano
tutti la stessa lunghezza
Codifica
6
7
Codifica
8
Codifica Binaria dei Caratteri: Codice ASCII
Codifica Binaria dei Caratteri: Codice ASCII
‰ Quanti sono gli oggetti compresi nell’insieme?
 26 lettere
l tt r maiuscole/miniscole
m iusc l /minisc l Ö 52
 10 cifre
 ~ 30 segni
g di interpunzione
p
 ~ 30 segni caratteri di controllo {EOF, CR, LF,…}
Ö ~ 120 oggetti Ö k=7
‰ Codice
C di ASCII utilizza
ili
7 bi
bit
 Puo’ rappresentare 27=128 caratteri
‰ Con 8 bit(1 byte) si possono rappresentare 256
caratteri (ASCII esteso)
‰ Si stanno diffondendo codice p
piu’ estesi,, e.g.,
g,
UNICODE, per rappresentare anche i caratteri
delle lingue orientali

UNICODE 16 bit Ö 216=65536 caratteri
UNICODE,
Codifica
9
Codifica
Codifica dei Numeri: Numeri e Numerali
Sistemi di Numerazione
‰ Numero
Numero:: Entita’ Astratta
‰ Posizionali
Posizionali:: Il valore di un simbolo dipende dalla
‰ Numerale
N
Numerale:
l : Sequenza
S
di caratteri
tt i che
h rappresenta
t
posizione
i i
che
h esso occupa all’interno
ll’i t
della
d ll
configurazione.
an-1an-2…a
a0 B
un numero in un dato sistema di numerazione

Lo stesso numero e’
e rappresentato da numerali diversi in
sistemi diversi
9 156 sistema decimale
9 CLVI in numeri romani


‰ Un numerale rappresenta un numero solo se si

specifica un sistema di numerazione


Lo stesso numerale rappresenta diversi numeri in diverse
notazioni
Es: 100100
Differiscono per la scelta della base B
Base indica il numero di simboli usati (0,…,B(0,…,B-1)
Decimale (B=10), Binario (B=2), Ottale (B=8), Esadecimale
(B=16)
‰ Non posizionali:
posizionali: Il valore di un simbolo non dipende
dalla posizione che esso occupa all
all’interno
interno della
configurazione
9 Centomilacento in notazione decimale
9 Trantasei in notazione binaria

Codifica
10
11
Numeri Romani
Codifica
12
Sistemi di Numerazione Posizionale
Conversione BinarioÖ
BinarioÖDecimale
‰ Sistema Decimale:
Decimale: Sistema di Numerazione
‰ an-1an-2…a0 2 Ö an-1*2n-1+…+a1*21+a0*20
Posizionale
P
i i
l in
i b
base B
B=10
10
an-1an-2…a0 10
rappresenta
t
n
1
an-1*10 +…+a1*101+a0*100

‰ 101102 Ö 1*24+0*23+1*22+1*21+0*20=24+22+21=16+4+2=22

Ciascuna cifra
Ci
if rappresenta
t il coefficiente
ffi i t di una potenza
t
della base
Si sommano le potenze di due a cui corrisponde un 1 nel
numerale
l
24 23 22 21 20
16 8
1 0 1 1 0
1 0 1 1 0
4
2 1
‰ Sistema Binario:
Binario: Sistema di Numerazione
Posizionale in base b=2
an-1an-2…a0 2
rappresenta
an-1*2
2n-1+…+a
… a1*2
21+a
a0*2
20
Codifica
13
Codifica
Conversione DecimaleÖ
DecimaleÖBinario
Conversione DecimaleÖ
DecimaleÖBinario
‰ Sistema di Numerazione in base B (B=2 caso particolare)
‰ Il numero binario si ottiene
‰ an-1an-2…a0 B Ö an-1*Bn-1+…+a1*B1+a0*B0=N
N
Ö an-1*Bn-1+…+a1*B+a0=N
‰ Dividendo il numero per la base B
B, si ottiene:
n
2
n
3
‰ an-1*B +an-2*B +…+a1+a0/B


Quozionte: N1=a
N1 an-1*B
Bn-2+a
an-2*B
Bn-3+…+a
a1
Resto:
a0
‰ Il resto della divisione corrisponde all’ultima cifra a0
della
d ll rappresentazione
i
iin b
base B d
dell numero N
‰ Applicando lo stesso procedimento al quoziente N1 si
ottiene la penultima cifra a1 della rappresentazione in
base B
‰ Ripetendo
p
la procedura
p
e’ possibile
p
ottenere tutte le
altre cifre

Ci si ferma quando il quoziente e’ uguale a 0
Codifica
scrivendo la serie dei resti
delle divisioni per 2,
iniziando dall’ultimo resto
ottenuto
tt nut
573:2
286:2
286 2
143:2
71:2
35:2
17:2
8:2
4:2
2:2
1:2
Ö
Ö
Ö
Ö
Ö
Ö
Ö
Ö
Ö
Ö
286
143
71
35
17
8
4
2
1
0
resto 1
resto
t 0
resto 1
resto 1
resto 1
resto 1
resto 0
resto 0
resto 0
resto 1
14
-> a0
-> a1
-> a2
-> a3
-> a4
-> a5
-> a6
-> a7
-> a8
-> a9
10001111012=57310
15
Codifica
16
Intervalli rappresentati
Conversione DecimaleÖ
DecimaleÖBinario
‰ Rappresentando
pp
gli
g interi positivi
p
e lo zero in notazione binaria con
n
18:2=9 resto 0
137:2=68 resto 1
9:2=4 resto 1
68:2=34 resto 0
4:2=2 resto 0
34:2=17 resto 0
2:2=1 resto 0
17:2=8
17:2
8
resto 1
1:2=0 resto 1
8:2=4
resto 0
4:2=2
resto 0
2:2=1
resto 0
12 0
1:2=0
resto
t 1
100102=1810
n cifre (bit) si copre l’intervallo [0, 2 -1]
n
‰ Si sfruttano tutte le 2 disposizioni
Esempio: n=3
0
1
2
3
4
5
6
7
Codifica
17
‰ Per i numerali esadecimali occorrono 16 cifre
18
‰ Conversione esadecimale
esadecimale--binario
{ 0,1,
0 1 …, 9
9,A,B,C,D,E,F
A B C D E F}
A ciascuna cifra esadecimale si fa corrispondere il gruppo di 4 bit
che ne rappresenta il valore
 Esempio
p
F
5
7
A
3
1

‰ Il valore delle cifre

Codifica
Conversioni tra base 16 e base 2
Il sistema esadecimale

000
001
010
011
100
00
101
110
111
NB Anche gli 0 non significativi devono essere rappresentati
100010012=13710

[0,7]
0,1, …, 9 hanno il valore consueto
A vale 10, B vale 11, …, F vale 15
1111 0101 0111
‰ Stesso meccanismo della notazione decimale pesata
1010 0011 0001
‰ Conversione binario
binario--esadecimale
‰ Esempio:
E
i rappresentazione
t i
di BAC16
Partendo da destra si fa corrispondere a ciascun gruppo di 4 o
meno cifre binarie la cifra esadecimale che ne rappresenta il valore

N= 11·16
N
62 + 10·16
0 61 + 12·16
60 = 2988
988
‰ Si usano
s
sspesso
ss st
stringhe
i h esadecimali
s d im li per rappresentare
s t
stringhe binarie
‰ Conversione Decimale Ö Esadecimale?
Rappresentazione più compatta: con sole 2 cifre esadecimali si
rappresentano valori memorizzati in 8 bit
 Esempio: rappresentazione dei colori RGB, indirizzi di memoria,
indirizzi MAC

Codifica
19
Codifica
20
Interi positivi e negativi
Rappresentazione
appr s ntaz on con mo
modulo
u o e ssegno
gno
‰ Per rappresentare un numero con segno, si usa:
‰ Finora abbiamo considerato solamente la
rappresentazione dei numeri positivi (unsigned)
‰ Si utilizzano varie rappresentazioni per gli interi
relativi







‰ Esempio
Modulo e segno
C
Complemento
l
t a1
Complemento a 2
Eccesso
n = 4 bit
5 = 0101
intervallo [[-7,+7]
-5 = 1101
‰ Osservazioni

‰ Per rappresentare gli interi relativi, a parità di

cifre si dimezza l’intervallo dei valori assoluti
Intervallo
I t
ll di rappresentazione
t i
simmetrico
i
t i
Problema: doppia rappresentazione dello zero
9 Ad es. nel caso di 8 bit: 10000000 e 00000000

Codifica
Ulteriore
Ul i
problema:
bl
addizione
ddi i
e sottrazione
i
complicata
li
d
da segno
dei numeri, modulo dei numeri
21
Rappresentazione in complemento a 1
Codifica
22
Rappresentazione
pp
in complemento
p
a2
‰Per i numeri positivi:
positivi: si aggiunge uno 0 a sinistra della
‰ I numeri positivi hanno la stessa rappresentazione che in
rappresentazione
s t i
d
dell numero
m
iin bi
binario
i
‰Es: 5=101 (3 cifre) Ö 0101 (4 cifre)
‰Per
un bit
bi per il segno: 0 per +, 1 per n-1 bit per il modulo
Intervallo di rappresentazione: [[-2n-1+1, +2n-1-1]
complemento a 1
‰ I negativi si ottengono sommando 1 alla loro rappresentazione in
cambiare di segno
g si complementa
p
il numerale bit a bit
complemento a 1
‰ Intervallo di rappresentazione con n bit: [[-2n-1, +2n-1-1]
‰ Notazione Posizionale: Pesi delle cifre: -2n-1 2n-2 ... 21 20
‰ Consideriamo il numero espresso in base 2
xn-1xn-2…x0
‰Es 5= 0101 Ö -5=1010
‰ I numerali positivi iniziano per 0, i negativi per 1
‰ Intervallo di rappresentazione con n bit: [[-2n-1+1,
+1 +2n-1-1]
‰ È una notazione posizionale
Pesi delle cifre: ((--2n-1+1) 2n-2 ... 21 20
Esempio
n = 4 bit
intervallo di rappresentazione [[-7, +7]
5 = 0101
-5 = 1010 ((-7+2)

Il bit più
iù si
significativo
ifi ti xn-1 assume
ss
peso
s negativo
ti -2n-1
‰ Quindi, il valore di un numero N espresso in complemento a 2 è
n-2
Intervallo più esteso ma asimmetrico
i=0
U sola
Una
l rappresentazione
t i
dello
d ll zero
N = -xn-12n-1 + Σ xi 2i
Codifica
23
Codifica
24
Conversione decimaledecimale-binario (CP1 e CP2)
Rappresentazione in complemento a 2 (2)
‰
1.
Esempio:
‰ Abbiamo già visto come fare se il numero X è
‰ Se
S il numero X è negativo
ti :
n = 4 bit
bi
iintervallo
ll [[-8,
8 +7]
7]
510 = 0101CP2
-510 = 1011CP2 (-8+2+1))



Prima regola pratica per complementare (calcolare la
rappresentazione di -X a partire da quella di X):
 Effettuare il complemento di ogni bit di X ed aggiungere 1

28 = 256 < 347 < 512 = 29
intervallo con n bit: [[-2n-1 ,+2n-1-1]
pertanto nmin=10
+347
347 in
i notazione
t i
a 10 bit:
bit
Esempio (4 bit)
9 Complemento
C
l
t di ttutti
tti i bit
bit: 1001
9 Aggiungere 1: 1001+1 = 1010CP2 = -610
-512
- 512
1
Stesso esempio
9 Gli ultimi 2 bit rimangono invariati: __10
9 Complementare gli altri 2 bit: 1010CP2 = -610
Codifica
256
128
64
32
0 1
0
1 0
complementando
l
t d a2
2:
Seconda regola pratica per complementare:
 Partendo da destra si lasciano invariati tutti i bit fino al primo 1
compreso, e poi si complementa bit a bit

Determinare il numero minimo di bit da usare (nmin)
Convertire il valore assoluto di X in notazione a nmin bit
Complementare
l
((a 1 o 2) ill numerale
l cosìì ottenuto
‰ Esempio: convertire ((-347)10 in CP2
9 +610 = 0110CP2
2.
positivo
256
0
128
1
64
0
32
1
16
8
1
16
0
4
1
2
0
8
4
0
1
1
1
2
0
1
1
1
25
Codifica
Rappresentazioni a confronto
Addizioni binarie
Decimale
‰ Le addizioni fra numerali si effettuano cifra a cifra
+7
+6
+5
+4
+3
+2
+1
+0
-0
-1
-2
-3
-4
-5
-6
-7
-8
M&S
0111
0110
0101
0100
0011
0010
0001
0000
1000
1001
1010
1011
1100
1101
1110
1111
-----
CP1
0111
0110
0101
0100
0011
0010
0001
0000
1111
1110
1101
1100
1011
1010
1001
1000
-----
CP2
26
((come iin d
decimale)
i l ) portando
d il riporto
i
alla
ll cifra
if
0+0=0
successiva
0111
0110
0101
0100
0011
0010
0001
0000
----1111
1110
1101
1100
1011
1010
1001
1000
0+1=1
1+0=1
‰ Esempio
1 + 1 = 0 con il riporto di 1
3+2=5
0011 +
0010 =
0101
Se il numero di cifre non permette di rappresentare
il risultato si ha un trabocco (overflow) nella
propagazione
i
d
dell riporto
i
t
Codifica
27
Codifica
28
Aritmetica in CP2: operazione di
negazione
Overflow
‰ Sia A rappresentato in complemento a due
‰ Se si considerano due numeri interi senza segno rappresentati
A = an-1an-2…a1a0
su n bit, si verifica la condizione di overflow ogni volta che il
risultato supera 2n-1
‰ Esempio
Es
i

Sommiamo 5 e 11 su 4 bit (max rappr. =
(5)10 = (0101)2
(11)10 = (1011)2
‰ Abbiamo visto come la rappresentazione di -A si ottiene nel
g
modo seguente:

24-1=15)

Si complementa ogni bit ai ottenendo il bit ai =
Si considera la stringa ottenuta come un intero
senza segno e si somma 1
1 se ai=0
0 se ai=1
‰ Esempio: A=18 su 8 bit

0101+


101 1=
10000

Rappresentazione di A in CP2: 00010010
Complemento (bit a bit): 11101101
Sommiamo 1: 11101101 +
00000001 =
11101110
11101110 = -27 + 26 + 25 + 23 + 22 + 21 = -18
Overflow
Codifica
29
Codifica
Addizioni in complemento a 2
La regola di overflow
‰ L’addizione per interi in complemento a due è identica a
‰ Si verifica un overflow nell’addizione di interi in complemento
p
a
quella per interi senza segno


2 se e solo se
Si somma dal bit meno significativo portando il riporto ad ogni
p
passo
Si trascura l’eventuale riporto in uscita dal bit più significativo


‰ L’unica differenza è nel modo in cui si controlla l’overflow



Sommiamo –3 e 4 su 4 bit
-3 = 1101
1101 +
+4 = 0100


Sommiamo 5 e 4 su 4 bit (max rappr. = 23-1=7)
+5 = 0101
+4 = 0100
0101 +
0100 =
0100 =
10001
L’ultimo bit di riporto viene
ignorato: il risultato è
corretto
Il risultato della somma di due interi positivi è un intero negativo
Il risultato della somma di due interi negativi è un intero positivo
‰ Esempio
‰ Esempio
E
i

30
1001
Overflow: la somma di due interi
positivi non può dare un intero negativo
Codifica
31
Codifica
32
Sottrazioni in complemento a 2
Overflow per la sottrazione
‰ Può verificarsi l’overflow con la sottrazione?
‰ Per sottrarre ad un minuendo (M) un sottraendo (S) basta
sommare M e –S
‰ Conosciamo la maniera semplice di calcolare la negazione di un
numero in complemento a due



‰ Poiché la sottrazione è in effetti implementata


Con una negazione
g
ed una addizione
‰ Vale la regola di overflow della somma
Riusciamo a realizzare la sottrazione come se fosse una somma
Risparmiando così sulla circuteria della ALU

Si verifica se e soltanto se:
9 Il risultato della somma di due interi positivi è un intero negativo
9 Il risultato della somma di due interi negativi è un intero positivo
‰ Esercizio
E
i i

Si!
Calcolare 2 – 5 su 4 bit
Calcolare ((––3)) – 1 su 4 bit
C di i i di overflow
Condizioni
fl
Codifica
33
Esercizio
‰ Calcolare il risultato delle seguenti operazioni binarie tra
numerii iinterii con segno rappresentatii iin complemento
l
a 2 su
8 bit
‰ Scrivere l’equivalente
q
rappresentazione
pp
dei numeri
m
in
decimale (verificando la correttezza del risultato ottenuto)




00001101 + 00111101
00001100 + 10110110
00010100 - 01101111
11110100 + 11101000
Codifica
35
Operazione
A
B
Risultato
<0
A+B
≥0
≥0
A+B
<0
<0
≥0
A-B
≥0
<0
<0
A-B
<0
≥0
≥0
Codifica
34
Scarica

Codifica dell`Informazione