Rappresentazione
dell’informazione
La codifica delle informazioni
codifica
INFORMAZIONI
forma adatta
per essere trattata
dall’elaboratore
DATI
interpretazione
Ing. L.Testa - Fondamenti di Informatica
2
Informazioni
Numeri
Interi positivi
Positivi e negativi
Reali
Testi
Informazioni tradizionali
Immagini fisse
Vettoriali
Bitmap
Audio
Video
Informazioni multimediali
Ing. L.Testa - Fondamenti di Informatica
Rappresentazione dell’informazione
Interessa soprattutto distinguere informazioni
diverse
Con un solo simbolo è impossibile
Pertanto l’insieme minimo è costituito da
2 simboli (alfabeto binario)
Ing. L.Testa - Fondamenti di Informatica
Rappresentazione dell’informazione
Le informazioni vengono rappresentate mediante
sequenze di simboli
Nel caso dei simboli binari, le informazioni
(numeri, oggetti, parole) sono rappresentate da
sequenze dei due simboli (0 e 1)
Servono regole di manipolazione dei simboli
Ing. L..Testa Fondamenti di Informatica
Sistemi numerici
5
Sistemi numerici
Per determinare un sistema numerico serve:
un insieme limitato di simboli (le cifre), che
rappresentano quantità prestabilite (1, 2, V, X,
M)
le regole per costruire i numeri:
sistemi numerici posizionali
sistemi numerici non posizionali
Ing. L.Testa - Fondamenti di Informatica
Sistemi numerici
Sistemi numerici non posizionali:
valore delle cifre è indipendente dalla posizione
Sistemi numerici posizionali:
il valore delle cifre dipende dalla loro posizione
all’interno del numero
(ogni posizione ha un peso)
Ing. L.Testa - Fondamenti di Informatica
Sistemi numerici posizionali
Esempio:
N = d3 d2 d1 d0 ; V(N) = d3*p3 + d2*p2 + d1*p1 + d0*p0
N Æ rappresentazione del numero
V(N) Æ valore del numero
Sistemi a base fissa:
pi = ri
dove:
r è la base del sistema
di rappresentano le cifre
Ing. L.Testa - Fondamenti di Informatica
Sistemi posizionali a base fissa
N = dn-1 dn-2 … d1 d0
V(N) = dn-1*rn-1 + dn-2*rn-2 + … + d1*r1 + d0*r0
Proprietà
È a rango illimitato (ogni numero intero vi può
essere rappresentato)
È a rappresentazione unica (ad ogni numero
intero corrisponde un solo insieme ordinato di cifre)
È irridondante (ad ogni insieme ordinato di cifre
corrisponde un solo numero non rappresentato da altri
insiemi ordinati)
Ing. L.Testa - Fondamenti di Informatica
Sistema decimale
È un sistema numerico posizionale a base fissa
Il sistema decimale utilizza:
r = 10
d = 0,1,2,3,4,5,6,7,8,9
Ing. L.Testa - Fondamenti di Informatica
Sistema decimale
8427
=
8*103 + 4*102 + 2*101 + 7*100
Ing. L.Testa - Fondamenti di Informatica
Sistema binario
Anche il sistema binario è un sistema numerico
posizionale a base fissa
Il sistema binario utilizza:
r = 2
d = 0,1
Ogni cifra è detta bit (da BInary digiT)
Ing. L.Testa - Fondamenti di Informatica
Sistema binario
1011 = 1*23 + 0*22 + 1*21 + 1*20 = 1110
Ing. L.Testa - Fondamenti di Informatica
Altri sistemi utilizzati
Sistema ottale:
r = 8
d = 0,1,2,3,4,5,6,7
Sistema esadecimale:
r = 16
d = 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
Ing. L.Testa - Fondamenti di Informatica
Conversioni di base
Dal sistema binario a quello decimale
Utilizzando la definizione:
10102 = (1*8 + 0*4 + 1*2 + 0*1)10 =
= (8+2)10 = 1010
Oppure si può utilizzare il seguente formato:
N = ((dn-1*r + dn-2)*r + dn-3) …)*r + d0
Ing. L.Testa - Fondamenti di Informatica
1
Conversioni di base
Dal sistema decimale a quello binario
Esempio: 11510 = 1110011 2:
115
1
d0
d1
2
57
1
2
28
0
d2
2
14
0
d3
2
7
1
d4
2
3
1
d5
2
1
1
d6
Ing. L.Testa - Fondamenti di Informatica
Numeri frazionari
E’ possibile anche rappresentare numeri frazionari:
le potenze variano anche nel campo negativo
V(N) =
Σi di*ri = dn-1*rn-1 +…+ d0*r0 + d-1*r-1 +…+ d-m*r-m
N = dn-1 dn-2 … d1 d0 . d-1 d-2 … d-m+1 d-m
Ing. L.Testa - Fondamenti di Informatica
2
0
Conversioni di base
(per numeri frazionari)
Dal sistema binario a quello decimale
Sempre utilizzando la definizione:
0.1012 = 0*20 + 1*2-1 + 0*2-2 + 1*2-3=
= (0.5+0.125)10 = 0.62510
Ing. L.Testa - Fondamenti di Informatica
Conversioni di base
(per numeri frazionari)
Dal sistema decimale a quello binario
Esempio: 0.62510 = 0.101 2:
0.625 *
2
1.250 *
2
0.500 *
2
1.000
Ing. L.Testa - Fondamenti di Informatica
0.62510 = 0.101
2
Conversioni di base
Dal sistema decimale a quello binario
N.B.: Per convertire un numero composto da una parte
intera e una frazionaria in un altro sistema numerico,
occorre convertire separatamente le due parti e
successivamente giustapporre.
Ing. L.Testa - Fondamenti di Informatica
Conversione da binario ad esadecimale
100010112
1000 1011
8Bh
Ing. L.Testa - Fondamenti di Informatica
16 = 24 !!!
Numero di cifre necessario
Le macchine hanno vincoli spaziali:
è necessario conoscere il massimo valore
rappresentabile:
con n bit si può rappresentare al massimo il
numero 2n -1
è facile determinare che
n = INT( log2 (X+1) )
Ing. L.Testa - Fondamenti di Informatica
Operazioni aritmetiche
Per effettuare operazioni è necessario conoscere
la definizione del comportamento per ogni coppia
di simboli
Per ogni operazione esiste una tabella
Ing. L.Testa - Fondamenti di Informatica
Somma binaria
La tabella di definizione è:
0 + 0 = 0
0 + 1 = 1
1 + 0 = 1
1 + 1 = 0
con riporto di 1
1 + 1 + 1 = 1
con riporto di 1
Esempi
Ing. L.Testa - Fondamenti di Informatica
Sottrazione binaria
La tabella di
0 - 0
=
1 - 0
=
1 - 1
=
0 - 1
=
definizione è:
0
1
0
1
con prestito di 1 dal
bit di peso superiore
Esempi
Ing. L.Testa - Fondamenti di Informatica
Moltiplicazione e divisione
Si utilizzano le stesse procedure:
per la moltiplicazione:
somma e scorrimento
per la divisione:
differenza e scorrimento
Esempi
Ing. L.Testa - Fondamenti di Informatica
Rappresentazione dei numeri
nei calcolatori
Rappresentazione dei numeri nei calcolatori
Esiste un limite al numero di bit impiegati per
rappresentare un numero
Tale limite dipende da:
intervallo di variabilità
occupazione di memoria
Ing. L.Testa - Fondamenti di Informatica
Overflow e Underflow
Sono condizioni in cui si ha un errore nella
rappresentazione del risultato
Generalmente la rappresentazione è formata da
un numero finito di bit: se si supera tale limite si
ha errore
Ing. L.Testa - Fondamenti di Informatica
Numeri positivi
La rappresentazione di numeri positivi non crea
problemi
Si può avere overflow se il risultato delle
operazioni richiede un numero maggiore di bit di
quanto disponibile
Esempio: somma modulo 16
Ing. L.Testa - Fondamenti di Informatica
Numeri negativi
Esistono diverse possibilità di rappresentazione:
modulo e segno
complemento a 2
n
Ing. L.Testa - Fondamenti di Informatica
Modulo e segno
Convenzione per il bit più significativo:
0 : segno positivo
1 : segno negativo
esistono due rappresentazioni per lo ‘0’
+ 5 ---> 00101
- 10 ---> 11010
+ 0 ---> 00000
- 0 ---> 10000
Ing. L.Testa - Fondamenti di Informatica
Complemento a 2
(complemento alla base)
Dato X in base r di n cifre:
rn – X (complemento alla base del numero X)
Se X=01011, r=2, n=5
25-X = 100000 – 01011 = 10101
Regoletta pratica: il complemento a 2 si trova analizzando i bit del
numero a partire da destra: si riportano invariati tutti gli zeri fino al
primo bit a 1, si riporta invariato questo stesso bit a 1, si
complementano (0Æ1, 1Æ0) tutti gli altri bit
Ing. L.Testa - Fondamenti di Informatica
Complemento a 2
complemento a 2:
(complemento alla base)
per definizione il complemento a 2 di X è 2n - X
unica rappresentazione dello ‘0’
I numeri positivi sono rappresentati dal loro modulo e hanno il
bit più significativo (segno) posto a zero. I numeri negativi sono
rappresentati dal complemento a 2 del corrispondente numero
positivo, segno compreso. Pertanto, i numeri negativi hanno il
bit più significativo sempre a 1.
Esempio:
+3 <=> 00011
- 3 <=> 11101
Ing. L.Testa - Fondamenti di Informatica
Uso dei numeri negativi
Modulo e segno:
la somma algebrica di numeri positivi e negativi
può generare problemi
servono sistemi hardware specifici per la
gestione corretta del formato
Complemento a due:
la somma algebrica non genera problemi
Ing. L.Testa - Fondamenti di Informatica
Complemento a 2
Motivazione:
Sia dato un numero di bit n
i numeri che si possono rappresentare sono
n
nel range [0 - 2 -1]
si vuole calcolare A-B
n
si sostituisce -B con (2 -B)
n
si ottiene A+(2 -B)
La sottrazione si esegue mediante una somma!
Ing. L.Testa - Fondamenti di Informatica
Numeri negativi:
intervallo valori rappresentabili
Rappresentazione modulo e segno
-2n-1 + 1 ≤ N ≤ 2n-1 - 1
Rappresentazione in complemento a due
-2n-1 ≤ N ≤ 2n-1 - 1
Ing. L.Testa - Fondamenti di Informatica
Rappresentazione numeri reali
I numeri reali sono nel range [-∞ ÷ +∞]
Talvolta è necessaria una rappresentazione estesa
sulla retta dei reali
con 3 simboli
[+/-], X, Y, Z ∈ {0,1,…9} è
possibile rappresentare -999 ÷ +999
oppure
9 * 10[+/-] 99
[+/-] 99
oppure [+/-] 9 * 10
Ing. L.Testa - Fondamenti di Informatica
Virgola mobile
E’ la risposta alla necessità di manipolare
numeri di ordini di grandezza diversi
Notazione scientifica - numeri espressi nella forma:
X.YYY * 10WW
X: parte intera
Y: parte frazionaria
W: esponente
Ing. L.Testa - Fondamenti di Informatica
Virgola mobile
Nomenclatura:
A = M * BE
M: mantissa
B: base
E: esponente
Necessita di un segno per la mantissa e uno per
l’esponente
Ing. L.Testa - Fondamenti di Informatica
Virgola mobile
Forma normalizzata:
numero = ± 1.XXXXXXX * 2a
.XXXXXXX parte frazionaria
a è detto esponente vero
Ing. L.Testa - Fondamenti di Informatica
Virgola mobile
Rappresentazione standard (IEEE P754)
Segno: 1 bit di segno (0 per i positivi, 1 per i negativi)
Esponente: l’esponente vero è rappresentato come
numero senza segno su 8 bit usando la
rappresentazione eccesso 127 (il valore che quindi si
rappresenta è a+127; il valore dell’esponente vero
dovrà essere in modulo minore di 127)
Mantissa: vengono rappresentati i primi 23 bit della
parte frazionaria della forma normalizzata (hidden bit :
la parte intera di peso 20 viene sottintesa)
Ing. L.Testa - Fondamenti di Informatica
Virgola mobile
Rappresentazione IEEE P754 (32 bit)
1 bit per il segno
8 bit per l’esponente (rappresentazione eccesso 127)
23 per la mantissa (parte frazionaria - normalizzata)
Segno Esponente
S
E
Mantissa
F
N = (-1)S * 2E-127 * 1.F
Ing. L.Testa - Fondamenti di Informatica
Virgola mobile - precisione
S
(1 bit)
E
(8 bit)
F
(23 bit)
32 bit (singola precisione), M=127
S
(1 bit)
E
(11 bit)
F
(52 bit)
64 bit (doppia precisione), M=1023
S
(1 bit)
E
(15 bit)
F
(112 bit)
128 bit (quadrupla precisione), M=16383
Ing. L.Testa - Fondamenti di Informatica
Virgola mobile
Esempi usando: B=10, 2 cifre all’esponente e 8
alla mantissa:
+1
0 01 10000000
-63517,8
1 05 63517800
-0,000635178 1 97 63517800
-8,75 * 10-13 1 88 87500000
Fondamenti di Informatica
46
Virgola mobile
Moltiplicazione e divisione:
si moltiplica o si dividono le mantisse in
modo consueto
si sommano o si sottraggono gli esponenti
si normalizza
Esempio: 10,4 * 200 =
0 02 10400000 * 0 03 20000000 =
0 05 20800000
Ing. L.Testa - Fondamenti di Informatica
Virgola mobile
Somma e sottrazione:
si uguagliano gli esponenti
le mantisse vengono sommate
aggiustamento in caso di traboccamento
Esempio: 10,4 + 2 =
0 02 10400000 + 0 01 20000000 =
0 02 10400000 + 0 02 02000000 =
0 02 12400000 = 12,4
Ing. L.Testa - Fondamenti di Informatica
Virgola mobile
Approssimazioni:
34,56 + 0,005 =
0 02 3456 + 0 98 5000 =
0 02 3456 + 0 02 0000 =
0 02 3456 = 34,56
La precisione è data dal numero di cifre della
mantissa:
Doppia precisione: doppia lunghezza della
mantissa (range invariato, precisione raddoppiata)
Ing. L.Testa - Fondamenti di Informatica
Memorizzazione su calcolatore
e codici
Memorizzazione su calcolatore
L'unità atomica è il bit (BInary DigiT)
L'insieme di 8 bit è detta byte
Altre forme di memorizzazione:
Word (16 bit)
Double-word (32 bit)
Quad-word (64 bit)
Ing. L.Testa - Fondamenti di Informatica
Intervalli di variabilità
bit:
Numero di configurazioni: 2
intervallo di variabilità: [0-1]
byte:
Numero di configurazioni: 256
intervallo di variabilità:
dipende dal tipo di memorizzazione
Ing. L.Testa - Fondamenti di Informatica
Tipi di memorizzazione
Modulo: 256 configurazioni,
[0, 255]
Modulo e segno: 256 configurazioni,
[-127, +127]
Complemento a 2: 256 configurazioni,
[-128, +127]
Ing. L.Testa - Fondamenti di Informatica
Intervalli di variabilità
Word:
Double-word: [0, 232-1]
Quad-word:
Ing. L.Testa - Fondamenti di Informatica
[0, 216-1]
[0, 264-1]
Convenzioni
Floating point:
mantissa: 23 bit
segno: 1 bit
esponente: 8 bit
Ing. L.Testa - Fondamenti di Informatica
Codici
Codice: sistema di simboli che permette la
rappresentazione dell’informazione
0
Esempi:
Decodifica agevole vs codici compressi
Ing. L.Testa - Fondamenti di Informatica
Definizioni
SIMBOLO: entità di cui non si da qui una
definizione formale
STRINGA: sequenza finita di simboli
giustapposti (lunghezza della stringa, stringa
vuota)
ALFABETO: insieme finito di simboli
LINGUAGGIO: insieme di stringhe di simboli
tratti da un alfabeto
Ing. L.Testa - Fondamenti di Informatica
Esempi di alfabeti
Alfabeto italiano:
{A, B, C, D, …Z}
Alfabeto greco:
{α, β, γ, δ, ...ω}
Alfabeto binario:
{0, 1}
Ing. L.Testa - Fondamenti di Informatica
Alfabeto usato dal calcolatore
Interruttore (aperto/chiuso)
Foro su scheda (aperto/chiuso)
Transistor (in conduzione/spento)
Tensione (alta/bassa)
Dominio di magnetizzazione (↑/↓)
Riflettività di un’areola (alta/bassa)
Ing. L.Testa - Fondamenti di Informatica
Alfabeto usato dal calcolatore
Gli elaboratori utilizzano una logica e un’aritmetica
binaria
Ai due stati di un dispositivo vengono associati i
due simboli 0 e 1
Ing. L.Testa - Fondamenti di Informatica
Codifica dei simboli
E’ necessario determinare delle regole di
corrispondenza, dette codifiche
La codifica mette in corrispondenza (biunivoca)
ogni simbolo appartenente all’alfabeto più ricco
con una stringa di simboli appartenente
all’alfabeto più ridotto.
Ing. L.Testa - Fondamenti di Informatica
Codifica
Problema:
codificare i simboli dell’alfabeto A utilizzando
stringhe del linguaggio L, con A qualsiasi e
L={ stringhe di N bit }
Cardinalità C dell’alfabeto A:
numero di elementi di A
Ing. L.Testa - Fondamenti di Informatica
Codifiche ridondanti
Se C e’ la cardinalità, si deve avere:
N ≥ log2 C = M
cioè:
se
se
C ≤ 2N
M⎤ =N
M⎤ <N
è senza ridondanza
è con ridondanza
Ing. L.Testa - Fondamenti di Informatica
Distanza di Hamming
E’ definita come il minimo numero di bit di cui
differiscono due parole qualsiasi del codice
se N=M
si ha che
se c’è ridondanza,
Ing. L.Testa - Fondamenti di Informatica
H=1
H≥1
Rilevazione e correzione di errori
La ridondanza può servire per rilevare o
correggere errori nel codice
Num di errori rilevati: R = H-1
Num di errori corretti:
H −1
C≤
2
Ing. L.Testa - Fondamenti di Informatica
Esempio di codifica ridondante
Parità:
si ottiene dal codice non ridondante aggiungendo
un simbolo in modo che il numero di ‘1’ sia pari
(parità pari) o dispari (parità dispari).
Avendo H=2 può solo rilevare un errore
Ing. L.Testa - Fondamenti di Informatica
Codice BCD
BCD: Binary Coded Decimal
Simbolo: Codifica:
0
1
2
3
4
8
9
…
0000
0001
0010
0011
0100
1000
1001
Ing. L.Testa - Fondamenti di Informatica
Operazioni sui BCD
E’ usato spesso quando l’elaborazione è ridotta,
mentre la visualizzazione è frequente
Problema della correzione (+6)
Ing. L.Testa - Fondamenti di Informatica
Codifica dei testi
Si utilizza una tabella (arbitraria)
Standard oggi (quasi) universalmente riconosciuto
Codice ASCII
American Standard Code for Information Interchange
Ing. L.Testa - Fondamenti di Informatica
Codice ASCII
Si utilizzano 7 bit
quindi
128 simboli diversi
ASCII esteso (8bit)
diverse estensioni in dipendenza dal paese
oppure aggiunge la parità
Ing. L.Testa - Fondamenti di Informatica
Codice ASCII
Ing. L.Testa - Fondamenti di Informatica
Codice ASCII - note
I caratteri alfabetici sono consecutivi e in ordine
(alfabetico)
La distanza tra una lettera minuscola e la
corrispondente maiuscola è costante
Le cifre decimali sono consecutive e in ordine
(da 0 a 9)
Ing. L.Testa - Fondamenti di Informatica