La codifica dell’informazione
Codifica dati e istruzioni

Algoritmo
• descrizione della soluzione di problema scritta in modo
da poter essere eseguita da un esecutore (eventualmente
diverso dall’autore dell’algoritmo)
• sequenza di istruzioni che operano su dati.
dati

Programma
• algoritmo scritto in modo da poter essere eseguito da un
calcolatore (esecutore automatico)

Per scrivere un programma è necessario
rappresentare istruzioni e dati in un formato tale
che l’esecutore automatico sia capace di
memorizzare e manipolare.
Codifica dati e istruzioni

Alfabeto dei simboli
• cifre “0”, “1”, …, “9”, separatore decimale (“,”), separatore delle
migliaia (“.”) e segni positivo (“+”) o negativo (“–”).

Regole di composizione (sintassi), che definiscono le
successioni “ben formate”
• “1.234,5” è la rappresentazione di un numero;
• “1,23,45” non lo è.

Codice (semantica: interpretazione posizionale)
• “1.234,5” = 1×103 + 2×102 + 3×101 + 4×100 + 5×10–1
• “1,23,45” = ??

Lo stesso alfabeto può essere utilizzato con codici diversi:
• “123,456” = 1×102 + 2×101 + 3×100 + 4×10–1 + 5×10–2 + 6×10–3, [IT]
• “123,456” = 1×105 + 2×104 + 3×103 + 4×102 + 5×101 + 6×100, [UK]
Codifica Binaria


Alfabeto binario: usiamo dispositivi con solo due stati (0,1)
Problema: assegnare un codice binario univoco a tutti gli oggetti
compresi in un insieme predefinito (e.g. studenti)

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  2k stati  2k oggetti
Quanti bit mi servono per codificare N oggetti:
• N ≤ 2k  k ≥ log2N  k = log2N (approssimato all’intero superiore)

Attenzione!
ipotesi implicita: i codici hanno tutti la stessa lunghezza
Esempio di codifica binaria

Problema: assegnare un codice binario univoco a
tutti i giorni della settimana

Giorni della settimana: N = 7  k ≥ log27  k = 3

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
I giorni della settimana in binario (1)
Lunedì
Martedì
Domenica
Lunedì
Giovedì
0
Martedì
Mercoledì
Lunedì
Martedì
Lunedì
00
Mercoledì
Giovedì
Mercoledì
01
Mercoledì
Domenica
Sabato
Giovedì
Sabato
Venerdì
Venerdì
1 bit
2 “gruppi”
10
Sabato
Venerdì
1
Domenica
Martedì
11
2 bit
4 “gruppi”
Giovedì
Venerdì
Sabato
Domenica
3 bit
8 “gruppi”
000
001
010
011
100
101
110
111
I giorni della settimana in binario (2)
Lunedì
Martedì
Domenica
Mercoledì
Sabato
Giovedì
Venerdì
Sabato
Giovedì
0
Martedì
Domenica
Lunedì
Mercoledì
Venerdì
1 bit
2 “gruppi”
1
Giovedì
00
Sabato
Martedì
Sabato
01
Mercoledì
Domenica
10
Lunedì
Giovedì
11
Martedì
Domenica
Mercoledì
Venerdì
Venerdì
Lunedì
2 bit
4 “gruppi”
3 bit
8 “gruppi”
000
001
010
011
100
101
110
111
Codifica binaria dei caratteri

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 (CANC,ESC,INVIO,CTRL,ALT …)
circa 120 oggetti complessivi  k = log2120 = 7

Codice ASCII: utilizza 7 bit e quindi può rappresentare
al massimo 27=128 caratteri
• Con 8 bit (= byte) rappresento 256=28 caratteri (ASCII ext.)
• Oggi si usano codici più estesi: UNICODE 216 = 65535
per rappresentare anche i caratteri delle lingue orientali
ASCII su 7 bit
0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
010
sp
!
"
#
$
%
&
'
(
)
*
+
,
-
.
/
011
0
1
2
3
4
5
6
7
8
9
:
;
<
=
>
?
100
@
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
101
P
Q
R
S
T
U
V
W
X
Y
Z
[
\
]
^
_
110
`
a
b
c
d
e
f
g
h
I
j
k
l
m
n
o
111
p
q
r
s
t
u
v
w
x
Y
z
{
|
}
~
canc
Bit, Byte, KiloByte, MegaByte, …
Bit = solo due stati, “0” oppure “1”.
Byte = 8 bit, quindi 28 = 256 stati
KiloByte [KB] = 210 Byte = 1024 Byte ~ 103 Byte (diff.2%)
MegaByte [MB] = 220 Byte = 1'048'576 Byte ~ 106 Byte
GigaByte [GB] = 230 Byte ~ 109 Byte
TeraByte [TB] = 240 Byte ~ 1012 Byte (differenza 10%)
PetaByte [PB] = 250 Byte ~ 1015 Byte
ExaByte [EB]
= 260 Byte ~ 1018 Byte
Lo standard IEC per i prefissi binari
Grandezza
Nome Simbolo
Dimensione
SI
Diff. %
103
2.40%
Kilo binario
Kibi
Ki
210
Mega binario
Mebi
Mi
(210)2
1'048'576 (103)2
4.86%
Giga binario
Gibi
Gi
(210)3
1'073'741'824 (103)3
7.37%
Tera binario
Tebi
Ti
(210)4
1'099'511'627'776 (103)4
9.95%
Peta binario
Pebi
Pi
(210)5
1'125'899'906'842'624 (103)5 12.59%
Exa binario
Exbi
Ei
(210)6
1'152'921'504'606'846'976 (103)6 15.29%
Zetta binario
Zebi
Zi
(210)7
1'180'591'620'717'411'303'424 (103)7 18.06%
Yotta binario
Yobi
Yi
(210)8 1'208'925'819'614'629'174'706'176 (103)8 20.89%
1'024
• Usando questi prefissi si può risolvere l’ambiguità
• capacità di un disco fisso: 120 GB = 111.76 GiB,
• capacità di un floppy: 1.406 MiB = 1.475 MB
La codifica delle istruzioni

Si segue lo schema presentato per i caratteri
alfanumerici:
• quali e quante sono le istruzioni da codificare?
• qual è la lunghezza delle successioni di bit da utilizzare ?
• qual è la corrispondenza tra istruzioni e successioni di bit ?
Istruzioni
aritmetico-logiche
Codice Istruzione
0111 1100
ADD
0111 1101
SUB
0111 1110
AND
……… ………
Istruzioni per il
trasferimento dati
Codice Istruzione
1110 1000 LOAD
1111 1000 STORE
……… ………
……… ………
Istruzioni di
controllo
Codice Istruzione
0100 1001 IF_EQ
0100 1000 GOTO
0100 1100 RETURN
……… ………
Oltre al codice operativo

… è necessario far riferimento ai dati necessari per
completare l’esecuzione dell’istruzione,
• e.g. addizione: è necessario che sia specificato (anche implicitamente)
dove leggere i due operandi da sommare e dove scrivere il risultato;

il numero dei dati da specificare è variabile, in funzione
delle istruzioni.
Rappresentazione dei numeri
naturali
La rappresentazione dei numeri naturali (0,1,2,…) usata dai latini o dai
greci (I,II,III,…) era del tutto convenzionale, mentre quella da noi usata
(trasmessa dagli arabi) in base dieci (o decimale) si basa su un teorema
fondamentale dell’aritmetica.
Ciascun numero naturale (0,1,2,…) può essere rappresentato da una ed
una sola successione finita di bit, detta rappresentazione binaria o in
base due.
Questa possibilità è conseguenza di un importante Teorema
dell’Aritmetica, lo stesso che consente l’usuale rappresentazione
decimale dei numeri naturali, detta anche rappresentazione in base 10.
Questo Teorema è alla base anche della rappresentazioni dei naturali in
base due (binaria) così come di altre basi (ottale, esadecimale, ecc.)
Per capire questo importante Teorema della rappresentazione dei numeri
naturali, occorre distinguere tra:
i numeri naturali, i loro nomi-concetti e le loro rappresentazioni:
queste ultime possono cambiare a seconda del supporto (base) scelto
Teorema: Rappresentazione dei numeri
naturali
Scelto un numero naturale N (detto base) maggiore o uguale a
2, ogni numero naturale M diverso da 0 può essere
rappresentato in una sola maniera come somma finita di
potenze decrescenti (k, k-1, …) di N moltiplicate per
coefficienti (Ck, Ck-1,… C0) minori di M.
Ossia: scelta una base N≥2, per ogni numero naturale M≠0,
esiste un solo k ed una sola k-pla di numeri (coefficienti) Ck,
Ck-1,…C0 minori di N e con Ck≠0, tale che:
M = (Ck x Nk) + (Ck-1 x Nk-1) + … + (C0 x N0)
Esempi:
se la base N= 10, ventitrè => (2 x 101 ) + (3 x 100) => 23
se la base N= 2, ventitrè => (1 x 24 ) + (0 x 23) + (1 x 22) +
+ (1 x 21) + (1 x 20) => 10111
Esempio 1: Rappresentazione dei numeri naturali
Assumiamo: base N=10 ed M = “duemilacentootto”
- La più grande potenza di 10 presente in N è la terza potenza di
10, cioè 103 ; questa compare ben 2 volte; otteniamo quindi il
primo termine 103 x 2 (= 2000).
- Togliendo (103 x 2) da N, in quel che rimane (centootto), la
seconda potenza di 10, ossia 102 compare 1 volta, quindi
otteniamo il secondo termine 102 x 1 (=100)
- Togliendo (103 x 2)+(102 x 1) da N, in quel che rimane (otto), la
potenza prima di 10, ossia 101,compare 0 volte, quindi
otteniamo il terzo termine 101 x 0 (=0)
- Togliendo infine (103 x 2)+(102 x 1)+(101 x 0) da N, in quel che
rimane (otto), la potenza nulla di 10, ossia 100 (=1) compare 8
volte, quindi otteniamo il quarto ed ultimo termine 100 x 8 (=8)
Pertanto, duemilacentootto in base 10 è rappresentato da:
(103 x 2)+(102 x 1)+(101 x 0)+(100 x8) = 2108dieci
Esempio 2: Rappresentazione dei numeri naturali
Assumiamo: base N=2 ed M = “ventitrè”
- La più grande potenza di 2 presente in N è la quarta potenza di 2, cioè 24;
questa compare 1 sola volta; otteniamo quindi il primo termine 24 x 1 (=16).
- Togliendo (24 x 1) da N, in quel che rimane (sette), la terza potenza di 2,
ossia 23 compare 0 volte, quindi otteniamo il secondo termine 23 x 0 (=0)
- Togliendo (24 x 1)+(23 x 0) da N, in quel che rimane (sette), la seconda
potenza di 2, ossia 22,compare 1 volta, quindi otteniamo il terzo termine
22 x 1 (=4)
- Togliendo (24 x 1)+(23 x 0)+(22 x 0) da N, in quel che rimane (tre), la prima
potenza di 2, ossia 21 (=2) compare 1 volte, quindi otteniamo il quarto
termine 21 x 1(=2)
- Infine, togliendo (24 x 1)+(23 x 0)+(22 x 0)+(21 x 1) da N, in quel che rimane
(uno), la potenza nulla di 2, ossia 20 (=1) compare 1 volta, quindi otteniamo
il quinto ed ultimo termine 20 x 1(=1)
Pertanto, ventitrè in base 2 è rappresentato da:
(24 x 1)+(23 x 0)+(22 x 1)+(21 x 1)+(20 x1) = 10111due
Numeri naturali
Fissata la base, il Teorema assicura l’univocità della “lettura” (o
“interpretazione” o “de-codifica”) della sequenza di simboli
(cifre) di cui si compone il numero dato
 Sistema
di numerazione posizionale in base b
• N = ckck–1…c0 rappresenta ck×bk + ck–1×bk–1 + … + c0×b0
• b=10  1101dieci indica 1×103 + 1×102 + 0×10 + 1×100
• b=2 =>1101due indica 1×1011 + 1×1010 + 0×101 + 1×100
 Conversione
binario  decimale
• basta scrivere il numero secondo la notazione posizionale utilizzando già
il sistema decimale
• b=2  1101due indica 1×23 + 1×22 + 0×2 + 1×20 = 13dieci
Conversione binario  decimale
5
101100due = 1dieci×2dieci
+ 0dieci×24dieci+ 1dieci×23dieci+ 1dieci×22dieci+ 0dieci×21dieci+
+ 0dieci×20dieci =
= 1dieci×32dieci + 0dieci×16dieci + 1dieci×8dieci + 1dieci×4dieci+ 0dieci×2dieci
+ 0dieci×1dieci =
= 32dieci + 8dieci + 4dieci =
= 44dieci
101110101due = 1dieci×28dieci+ 0dieci×27dieci+ 1dieci×26dieci+ 1dieci×25dieci+ 1dieci×24dieci+
0dieci×23dieci+ 1dieci×22dieci+ 0dieci×21dieci+ 1dieci×20dieci =
= 1dieci×256dieci+ 0dieci×128dieci+ 1dieci×64dieci+ 1dieci×32dieci+
1dieci×16dieci+ 0dieci×8dieci+ 1dieci×4dieci+ 0dieci×2dieci+ 1dieci×1dieci =
= 256dieci+ 64dieci+ 32dieci+ 16dieci+ 4dieci+ 1dieci =
= 373dieci
Scarica

La codifica dell`informazione - Gruppo di Logica e Geometria della