Rappresentazione
dell’Informazione
Corso di Laurea in
Ingegneria Civile
Prof. Dario Bianchi
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
Rappresentazione
dell’Informazione
In un calcolatore vogliamo rappresentare
vari tipi di informazioni:
•
•
•
•
Numeri reali
Numeri interi
Testi
Grafici
Dario Bianchi - 2003
•
•
•
•
Disegni
Fotografie
Filmati
Suoni
Fond. Informatica - Ing. Civile
Rappresentazione
dell’Informazione
L’informazione può essere rappresentata in
due forme:
– Analogica
– Digitale
•Nella forma analogica una grandezza è rappresentata in
modo continuo.
•Nella forma digitale una grandezza è rappresentata in
modo discreto.
•La gran parte delle grandezze fisiche sono di tipo continuo
(ad esempio unsegnale acustico).
•Tuttavia alcuni tipi di informazioni “artificiali” sono di tipo
discreto (ad esempio un testo scritto).
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
Rappresentazione
dell’Informazione
• Per elaborare delle grandezze di tipo
continuo con un calcolatore, bisogna
utilizzare una sua rappresentazione
digitale.
• La rappresentazione digitale é una
approssimazione della rappresentazione
analogica.
• L’errore di approssimazione dipende dalla
precisione della rappresentazione digitale.
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
Rappresentazione
dell’Informazione
•Internamente ad un elaboratore ogni
informazione è rappresentata da una
sequenza di bit (cifre binarie)
•Una sequenza di bit non dice puo
`
rappresentare entita` diverse:
•Ad esempio la sequenza di cifre binarie:
01000001 puo’ rappresentare:
– l’intero 65
– il carattere A
– il valore di un segnale musicale
– il codice del colore di un punto sullo
schermo
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
Codici
• Un codice é un sistema di simboli atto a
rappresentare una informazione di
qualsiasi genere (caratteri, numeri, etc.).
• Ogni simbolo é messo in corrispondenza
biunivoca con una entitá che si vuole
rappresentare.
• Un codice binario usa come simboli le cifre
binarie “0” e “1”.
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
Sistemi Numerici
• Un numero N puó essere rappresentato come
una sequenza di cifre:
• N=dn-1dn-2 d1d0 • d-1d-2 d-m
• corrispondente a:
• N=dn-1•rn-1+dn-2•rn-2+ +d0•ro + d-1•r-1+ +d-m•r-m
• dove:
•d = cifra
•r = base
Dario Bianchi - 2003
•n = numero cifre parte intera
•m = numero cifre parte decimale
Fond. Informatica - Ing. Civile
Sistemi Numerici
Sistema Decimale
• R=10, d=0,1,2,3,4,5,6,7,8,9
N=dn-1•10n-1+dn-2•10n-2+ +d0+ d-1•10-1+d-m•10-m
• Esempio:
123.45=1•102+2•101+3•100 +4•10-1+5•10-2
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
Sistemi Numerici
Sistema Binario
• R=2, d=0,1
N=dn-1•2n-1+dn-2•2n-2+ +d0•20+ d-1•2-1+d-m•2-m
• Esempio:
101.012 = 1•22+0•21+1•20 +0•2-1+1•2-2 = 5.2510
• La cifra binaria é detta “bit” (binary digit – pezzo,
pezzetto: cioé l’unitá più piccola di informazione).
• E’ il sistema usato nei calcolatori.
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
Sistemi Numerici
Sistema Ottale
• R=8, d=0,1,2,3,4,5,6,7
N=dn-1•8n-1+dn-2•8n-2+ +d0•80+ d-1•8-1+d-m•8-m
• Esempio:
1278 = 1•82+2•81+7•80 = 8710
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
Sistemi Numerici
Sistema Esadecimale
(Base 16,indicato anche con H)
• R=16, d=0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
N=dn-1•16n-1+dn-2•16n-2+ +d0•160+ d-1•18-1+d-m•16-m
• Esempio:
A1H = A116 = 10•161+1•100 = 16110
• Per avere 16 simboli distinti bisogna aggiungere:
AH=10 CH=12
EH=14
BH=11 DH=13
FH=15
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
Conversioni di Base
Conversione dalla base 10 ad una base qualsiasi:
parte intera
N=d0•r0+d1•r1+d2•r2+ +dn-1•rn-1
N=d0+r(d1+r(d2(… +dn-1)))
Quindi dividendo N per la base r si ottiene come quoziente
d1+r(d2(… +dn-1)) e come (resto d0 la cifra meno significativa).
Dividendo ancora il quoziente per la base si ottiene la cifra di
peso 1 e così via fino ad avere un quoziente 0
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
Conversioni di Base
Esempio di conversione
dalla base 10 alla base 2: parte intera
115
2
1
57
1
d0
d1
2
28
0
11510 = 11100112
2
14
0
2
2
7
1
3
1
d2
d3
2
1
1
d4
d5
d6
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
2
0
Conversioni di Base
Conversione dalla base 10 alla base 2:
parte frazionaria
N=d-1•2-1+d-2•2-2+ +d-m•2-m
Se moltiplichiamo N per la base 2 otteniamo per la parte
intera d-1.
Moltiplicando ancora per 2 la parte frazionaria otteniamo
come parte intera d-2 etc.
Il risultato termina quando il risultato della moltiplicazione e’
esattamente 1 o quando si é raggiunta la precisione voluta
(una rappresentazione puo’ essere finita in una base e infinita
in un’altra).
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
Conversioni di Base
Esempio di conversione dalla base 10 alla base 2:
parte frazionaria
0.625 × 2
1.250 × 2
d-1
d-2
0.500 × 2
0.62510 = 0.1012
1.000 × 2
d-3
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
Conversioni di Base
Esempio di conversione dalla base 10 alla base 2:
parte intera e frazionaria
Per convertire un numero che ha parte intera e
parte frazionaria si effettuano le conversioni
separatamente.
Esempio:
11510 = 11100112
0.62510 = 0.1012
115.62510 = 1110011.1012
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
Conversioni di Base
Conversione fra le basi 8 o 16 e la base 2:
Le notazioni in base 8 e 16 possono essere
pensate come delle abbrevviazioni della notazione
in base 2.
Ogni cifra ottale corrisponde a 3 cifre binarie:
101 110 0012 = 5618
Ogni cifra esadecimale corrisponde a 4 cifre
binarie:
1 0111 00012 = 17116
Dario Bianchi - 2003
(0001 0111 00012 = 17116)
Fond. Informatica - Ing. Civile
Operazioni sui numeri binari
• Come per I numeri decimali ma con le
seguentui tabelle:
Somma:
Prodotto:
+
0
1
Dario Bianchi - 2003
0
0
1
1
1
10
×
0
1
Fond. Informatica - Ing. Civile
0
0
0
1
0
1
Operazioni sui numeri binari
• Somma:
+
0
1
0+0=0
0+1=1
1+0=1
1+1=0 con riporto 1 (210)
1+1+1=1 con riporto 1 (310)
0
1
0
1
1
10
111
riporto
10110+
11101
110011
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
Operazioni sui numeri binari
• Sottrazione:
+
0
0-0=0
0
0
1-0=1
1
1
1-1=0
0-1=1 con un prestito dal bit piu’ a sinistra.
riporto
11100101
110011
Dario Bianchi - 2003
1
1
10
riporto
1100
1001
0011
Fond. Informatica - Ing. Civile
Operazioni sui numeri binari
• Prodotto:
×
0
1
0
1
0
0
0
1
Dario Bianchi - 2003
1011
1101
1011+
000001011+
1011-110111+
1011--10001111
Fond. Informatica - Ing. Civile
Operazioni sui numeri binari
• Divisione:
×
0
1
0
1
0
0
0
1
Dario Bianchi - 2003
101101 11
00
01111
101
011
101
11
100
11
011
11
00
Fond. Informatica - Ing. Civile
Rappresentazione degli interi
positivi
• Quante cifre sono necessarie per
rappresentare in numero X in base 2 ?
– Se usiamo k bit abbiamo 2k configurazioni
possibili.
– Possiamo quindi rappresentare i numeri compresi
fra 0 e 2k-1
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
Rappresentazione degli interi
positivi
• Tutti I numeri x con 2k-1 - 1 < x ≤ 2k - 1
richiedono k bit per essere rappresentati
• Anche 2k-1 < x + 1 ≤ 2k
• K-1 < ≤ k
• Quindi per rappresentare il numero x
occorrono k bit con
k= |¯log2(x+1) ¯|
Cioé l’intero immediatamente superiore a
log2(x+1)
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
Rappresentazione degli interi
positivi
• Il risultato vale anche per una generica base r
k= |¯logr(x+1) ¯|
• Se B e’ il numero di cifre binarie che serve a rappresentare il
numero x e D é il numero di cifre necessarie sempre per
rappresentare x
B/D=|¯log2(x+1) ¯| / |¯log10(x+1) ¯| =
|¯log10(x+1) / log10(2) ¯| /( |¯log10(x+1) ¯| ~3.3
• Occorrono all’incirca 10 cifre binarie per rappresentare 3 cifre
decimali.
• Si usano queste abbrevviazioni:
– Kilo = 210 = 1024 ~ 1000
– Mega = 220 = 1.048.576 ~ 1.000.000
– Giga = 230 = ………
~ 1.000.000.000
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
Rappresentazione dei numeri nei
calcolatori
• La rappresentazione naturale dei numeri interi é quella
binaria.
• La memoria é organizzata in celle (“parole”) con un
numero fisso di bit (ad esempio 8).
0 1 0 1 1 0 0 1
• Corrisponde a 1 • 64 + 1 • 16 + 1 • 8 +1
• Usando 8 cifre binaerie (bit) possiamo rapprtesentare I
numeri compresi fra 0 e 28-1 = 255
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
Rappresentazione dei numeri nei
calcolatori
L’uso un numero finito di cifre porta ad una aritmetica modulare.
Pensiamo a degli incrementiunitari.
0000000 (0)
0000001 (1)
0000010 (2)
………..
………..
1111111 (255)
(1)0000000 (256 -> 0)
0000001 (1)
………..
Dario Bianchi - 2003
•Quando si raggiunge il numero 255 (tutti
1) non potendo rappresentare il 256 che
richiederebbe 9 bit si torna allo 0.
•Si ha quindi una aritmetica modulo 256.
•In generale se si usano parole di k bit si
ha una aritmetica modulo k.
Fond. Informatica - Ing. Civile
Rappresentazione degli interi
relativi
• Disponendo di k bit si possono avere 2k
configurazioni diverse.
• Metá devono essre usate per I numeri
positivi, l’ altra metá per quelli negativi.
• Ci sono due possibili rappresentazioni:
– in modulo e segno
– in complemento a 2
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
Rappresentazione degli interi
relativi in modulo e segno
• Il bit più significativo viene usato per
rappresentare il il segno:
• 0 per i numeri positivi
• 1 per quelli negativi
• Le cifre restanti rappresentano il modulo
+510 ->000001012
-1010->100010102
modulo
segno
• Lo zero ha due rappresentazioni:
(+0) 00000000 e (-0) 10000000
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
Rappresentazione degli interi
relativi in modulo e segno
• Algoritmo di somma:
– Confrontare I bit di segno dei due numeri
– Se sono uguali:
• Somma i moduli
• Assegna come bit di segno del risultato il bit di segno degli
operandi
– Altrimenti:
• Confronta i valori assoluti dei due numeri
• Assegna come bit di segno del risultato quello dell’operando
con modulo maggiore
• Sottari i moduli nell’ordine giusto
• Macchinoso!! (Analoga la sottrazione).
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
Complemento
• Complemento alla base:
– Dato un numero x di base r e di k cifre é
definito come
rk - x
• Complemento alla base -1:
rk -1- x
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
Complemento
• Complemento a 2: 2k – x
– Es: x= 01010110 k=8
100000000 01010110 =
010101010
• Complemento a 1: 2k -1- x
– Es: x= 01010110 k=8
11111111 01010110 =
10101001
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
Complemento
• Complemento a 1: 2k -1- x
– Lo si ottirne semplicemete scambiando 0 con 1 e 1 con 0
– Es: x= 01010110 k=8
01010110 x
10101001 complemento di x
• Complemento a 2: 2k – x
– Si fa il complemento ad 1 di x e gli si somma 1
– Es: x= 01010110 k=8
01010110
x
10101001 +
complemento a 1
1 =
sommo 1
10101010
complemento a 2
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
Rappresentazione dei numeri
negativi in complemento a 2
• Supponiamo di avere una cella di k bit
• I numeri positivi vengono rappresentati dal loro
modulo e hanno il bit piu’ significativo (segno) = 0
• I numeri negativi vengono rappresentati facendo il
complemento a due del corrispondente numero
positivo. Hanno il bit piu’ significativo (segno) = 1
• Si rappresentano come positivi i numeri
da 0 a 2k-1-1
• Si rappresentano come negativi i numero che
vanno da -2k-1 a -1
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
Rappresentazione dei numeri
negativi in complemento a 2
01111111
01111110
+127
+126
00000010
00000001
00000000
11111111
11111110
+2
+1
0
-1
-2
10000001
10000000
-127
-128
Dario Bianchi - 2003
Supponendo una cella
di 8 bit (k=8, 2k=256)
2k-1-1 = 127
-2k-1 = -128
Fond. Informatica - Ing. Civile
Rappresentazione dei numeri
negativi in complemento a 2
• Supponiamo di voler calcolare A-B con una cella
di k bit.
• Possiamo calcolare A + (-B) dove –B e’ il
complemento a 2 di B dato da 2K-B.
• Si ottiene
A - B = A + (-B) = A + 2K - B
in quanto il termine 2K non é rappresentabile in k
bit.
• Per fare una sottrazione possiamo sommare il
complemento a 2 del secondo operando
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
Rappresentazione dei numeri
negativi in complemento a 2
• Come possiamo interpretare un numero in complemento
a due?
• Se il bit più significativo (segno) =0 allora il numero é
positivo e le sue cifre ci danno il modulo
– Es: 00110011 = + 51 (32+16+2+1)
• Se il bit più significativo (segno) =1 allora il numero é
negativo e per avere il modulo si deve fare il
complemento a 3
– Es: 10110011
negativo
–
01001100+ complemento a 1
–
1
–
01001101 complemento a 2 = 77 (64+8+4+1)
– il numero originale era -77
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
Rappresentazione dei numeri
negativi in complemento a 2
• Esempi (supponiamo k=5, possiamo
rappresentare I numeri da -16 a + 15):
01001+
00100=
01101
01001+
11100=
100101
Dario Bianchi - 2003
+9
+4
+13
+9
-4
+5 (sesto bit eliminato)
Fond. Informatica - Ing. Civile
Rappresentazione dei numeri
negativi in complemento a 2
• Esempi (supponiamo k=5, possiamo
rappresentare I numeri da -16 a + 15):
10111+
00100=
11011
10111+
11100=
110011
Dario Bianchi - 2003
-9
+4
+5
-9
-4
-13 (sesto bit eliminato)
Fond. Informatica - Ing. Civile
Rappresentazione dei numeri
negativi in complemento a 2
• Esempi (supponiamo k=5, possiamo
rappresentare I numeri da -16 a + 15):
01001+
01000=
10001
+9
+8
OVERFLOW + 17 non e’
rappresentabile con 5 bit
10111+
-9
10111=
-9
101110
-13 (sesto bit eliminato)
OVERFLOW -18 non e’ rappresentasbile
Con 5 bit
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
Rappresentazione dei numeri
negativi in complemento a 2
• OVERFLOW (Supero di capacitá)
• Si ha quando il risultato non é
rappresentabile con il numero di bit
disponibili.
• Si ha solo sommando due numeri
entrambi positivi o entrambi negativi.
• In questo caso il segno del risultato risulta
opposto a quello degli operandi.
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
Operazioni di Shift
(Scorrimento)
0 0 1 1 0 0 1 1
• Shift a sinistra:
moltiplica per 2
0 1 1 0 0 1 1 0
0
• Shift a destra:
divide per 2
Dario Bianchi - 2003
0
0 0 0 1 1 0 0 1
Fond. Informatica - Ing. Civile
Numeri reali
Rappresentazione in virgola fissa
• Dobbiamo supporre di utilizzare n bit per
la parte intera e m bit per la parte
frazionaria:
xxxxx.xxx
Il numero
11000101
Corrisponderebbe (usando le ultime tre cifre
come parte frazionaria) a:
1•24 + 1•23 + 1•2-1 + 1•2-3 = 24.625
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
Numeri reali
Rappresentazione in virgola fissa
• La rappresentazione in virgola fissa limita fortemente
l’intervallo numerico utilizzabile. Possiamo infatti
rappresentare numeri da 2-3=0.125 a 25=31
• Il numero di cifre significative dipende dal suo valore
assoluto:
10011.101 = 19.625 ha 8 cifre significative
• Anche
1001.1101 =9.81125 ha 8 cifre significative
Ma nella rappresentazione in virgola fissa diventerebbe:
01001.110=9.75
con notevole perdita di precisione.
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
Numeri reali
Rappresentazione in virgola mobile
(Floating point)
• Notazione esponenziale
125000000000
pio’ essere scritto come 1.25 • 1011
Anche nella notazione binaria possiamo dire
10010.101 = 1.0010101 • 24
.010010101 = 1.0010101 • 2-2
In questo caso la precisione del numero non
dipende dal suo valore assoluto.
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
Numeri reali
Rappresentazione in virgola mobile
(Floating point)
•
•
•
•
•
•
Semplice precisione:
1 bit segno mantissa
1 bit segno esp[onente
23 bit modulo mantissa
7 bit modulo esponente
La mantissa consente una precisione
23/3.3 cifre decimali. L’esponente puó
variare da -127 a +127 ed il range di un
numero floating point é fra 2-127 e 2+127.
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
Numeri reali
Rappresentazione in virgola mobile
(Floating point)
•
•
•
•
•
•
Semplice precisione:
1 bit segno mantissa
1 bit segno esp[onente
23 bit modulo mantissa
7 bit modulo esponente
La mantissa consente una precisione
23/3.3 cifre decimali. L’esponente puó
variare da -127 a +127 ed il range di un
numero floating point é fra 2-127 e 2+127.
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
Precisione
• Interi
– “corti” 16 bit = 2 byte
da ~ -32.000 a ~ + 32000
– “lunghi” 32 bit =4 byte
da ~ -2000.000.000 a ~ + 2000.000.000
• Floating point
– Semplice precisione 32 bit = 4 byte
– Doppia precisione 64 bit = 8 byte
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
Operazioni sui numeri
Floating Point
• Moltiplicazione (divisione):
– Si moltipliclano (o si dividono) le mantisse
– Si sommano (o si sottraggono) gli esponenti
• Condizione di errore
– OVERFLOW: si ha un esponente (positivo)
troppo grande (1.15•290•1.99•285)
– UNDERFLOW: si ha un esponente (negativo)
troppo piccolo (1.15•2-90•1.99•2-85)
– Divisione per Zeri: operazione non ammessa.
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
Operazioni sui numeri
Floating Point
• Addizione e sottrazione:
• Bisogna prima allineare I due operandi:
• Es:
0.4356 • 10-4 +
0.5137 • 10-2 =
0.0043 • 10-2 +
0.5137 • 10-2 =
0.5180 • 10-2
Si puo’ avere una perdita di precisione nell’allineamento dei
due numeri (si perdono le cifre meno significative del
numero con esponente più piccolo).
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
Codici
• Codice: sistema di simboli che permette la
rappresentazione dell’informazione
• Esempi:

• Decodifica agevole vs codici compressi
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
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
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
Esempi di alfabeti
• Alfabeto italiano:
{A, B, C, D, …Z}
• Alfabeto greco:
{α, β, γ, δ, ...ω}
• Alfabeto binario:
{0, 1}
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
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)
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
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
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
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.
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
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
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
Codifiche ridondanti
• Codifiche ridondanti
N
C2
N  log 2C  M
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
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,
Dario Bianchi - 2003
H=1
H1
Fond. Informatica - Ing. Civile
Rilevazione e correzione
di errori
• La ridondanza può servire per
rilevare o correggere errori nel
codice
• Num di errori rilevati: R = H-1
H 1
• Num di errori corretti: C 
2
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
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
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
Codice BCD
• BCD: Binary Coded Decimal
Simbolo: Codifica: Con Parita`:
0
1
2
3
4
…
0000
0001
0010
0011
0100
00000
00011
00101
00110
01001
8
9
1000
1001
10001
10010
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
Codici autocorrettivi
• Per avere la possibilita’ di correggere
bisogna avere una distanza di Hamming
H>=2
• Esempio (Non realistico: in realta` la
ridondanza puo’ essere piu’ bassa)
Codici: 0  000 1111 (H=3)
{001,010,100} sono codici errati 0
{110,101,011} sono codici errati 1
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
Codice ASCII
• American Standard Code for Information
Interchange
• 7 bit
quindi
• ASCII esteso
128 simboli diversi
(8bit)
– diverse estensioni in dipendenza dal paese
– oppure aggiunge la parità
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
ALGEBRA BOOLEANA
• Boole matematico inglese (XIX secolo)
• La sua algebra viene utilizzata solo
dall’inizio del XX secolo (primi sistemi di
calcolo)
• Si basa su due soli stati:
– acceso
(ON)
– spento (OFF)
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
Variabili booleane
• Le variabili possono assumere solo due
valori: 0 e 1
• Si chiamano Variabili logiche o
booleane
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
Funzioni booleane
• Usando le variabili booleane, si
possono costruire le funzioni booleane
F(x,y,z)
che possono assumere solo due stati:
– true
– false
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
Tabella della verità
• Ogni funzione booleana è caratterizzata
dalla propria tabella della verità
Dario Bianchi - 2003
x
y
z
F
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
1
0
1
1
0
1
0
0
Fond. Informatica - Ing. Civile
Funzioni booleane
• Funzioni completamente specificate:
se per tutte le combinazioni delle variabili
il suo valore è determinato
• Esempio: uno studente può chiedere la
tesi solo se ha superato tutti gli esami ed
è regolarmente iscritto
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
Funzioni booleane
• Funzioni non completamente
specificate: se a una o più combinazioni
delle sue variabili non corrisponde alcun
valore della funzione
• Esempio: uno studente si laurea solo se ha
superato tutti gli esami e ha svolto la tesi
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
Costanti booleane
• Oltre alle variabili vi sono anche le
costanti
• Essendo l’Algebra Booleana definita su
due soli simboli, esistono solo due
costanti:
–0
–1
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
Operatori logici
• Tra le variabili e le costanti possono
intervenire delle relazioni
• Le relazioni si esprimono utilizzando gli
operatori logici
• Definiti insieme agli operatori logici, i
postulati definiscono il loro
comportamento
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
Tipi di operatori
• Esistono due tipi di operatori, in
dipendenza dal numero di variabili che
utilizzano:
– monadici
– diadici
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
L’operatore NOT
• Il risultato è il complemento dell’unica
variabile
x
NOT x
0
1
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
1
0
L’operatore AND
• Il risultato è vero solo se sono vere
entrambe le variabili
Dario Bianchi - 2003
a
b
a AND b
0
0
1
1
0
1
0
1
0
0
0
1
Fond. Informatica - Ing. Civile
L’operatore OR
• Il risultato è vero solo se è vera almeno
una delle variabili
Dario Bianchi - 2003
a
b
a OR b
0
0
1
1
0
1
0
1
0
1
1
1
Fond. Informatica - Ing. Civile
L’operatore XOR
• Il risultato è vero solo se è vera solo
una delle due variabili
Dario Bianchi - 2003
a
b
0
0
1
1
0
1
0
1
a XOR b
Fond. Informatica - Ing. Civile
0
1
1
0
Operatori - nomenclatura
•
•
•
•
NOT:
AND:
OR:
XOR:
Dario Bianchi - 2003
inversione
prodotto logico
somma logica
or esclusivo
Fond. Informatica - Ing. Civile
(¯)
(·)
(+)
()
Operatori universali
• Con gli operatori NOT, OR, AND, XOR
si possono costruire tutte le funzioni
booleane
• Esistono due operatori (NAND, NOR)
che permettono la sintesi di qualsiasi
funzione, utilizzando un unico tipo di
operatori
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
L’operatore NAND
• Il risultato è vero solo se è falso l’AND
tra le due variabili
Dario Bianchi - 2003
a
b
0
0
1
1
0
1
0
1
a NAND b
Fond. Informatica - Ing. Civile
1
1
1
0
L’operatore NOR
• Il risultato è vero solo se è falso l’OR tra
le due variabili
Dario Bianchi - 2003
a
b
0
0
1
1
0
1
0
1
a NOR b
Fond. Informatica - Ing. Civile
1
0
0
0
Espressioni logiche
• Un insieme di variabili e/o costanti
booleane a cui siano applicati gli
operatori logici si dice espressione
booleana o logica
• Una espressione logica rappresenta
una funzione logica: ad esempio:
T  a b  a b
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
Precedenze tra operatori
• Le precedenze sono simili al + e al x
dell’algebra consueta:
– priorità alta
x
– priorità bassa +
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
Proprietà dell’algebra booleana
X·0 = 0
X+1 = 1
X·1 = X
X+0 = X
X·X = X
X+X = X
idempotenza
X·X = 0
X+X = 1
complementazione
X·Y = Y·X
X+Y = Y+X
commutativa
X·(X+Y) = X
X+(X·Y) = X
assorbimento
X·(X+Y) = X ·Y X+(X·Y) = X+Y assorbimento
X·(Y+Z) = X·Y+X·Z
X+(Y·Z) = (X+Y)·(X+Z)
distributiva
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
Proprietà dell’algebra booleana
X·(Y·Z) = (X·Y) ·Z = X·Y·Z
X+(Y+Z) = (X+Y)+Z = X+Y+Z
associativa
(X)=X
X·Y = X + Y
Dario Bianchi - 2003
X+Y = X ·Y
Fond. Informatica - Ing. Civile
De Morgan
Proprietà operatori universali
NOR ()
NAND ()
X1=0
X0=X
XX=X
X  Y = X·Y
X  Y = X+Y
X0=1
X1=X
XX=X
X  Y = X+Y
X  Y = X·Y
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
Sommattore
xn yn c
cn
Dario Bianchi - 2003
rn
n-1
x1 y1 c0
c1
r1
Fond. Informatica - Ing. Civile
x0 y0 c0
c0
r0
Sommatore
xi
0
0
0
0
1
1
1
1
yi ci-1
0 0
0 1
1 0
1 1
0 0
0 1
1 0
1 1
Dario Bianchi - 2003
ri
0
1
1
0
1
0
0
1
ci
0
0
0
1
0
1
1
1
ri = (xi  yi)  ci-1
ci = ci-1 (xiyi) + xiyi
Fond. Informatica - Ing. Civile
Reti logiche
• Reti combinatorie: le uscite dipendono
solo dagli ingressi
• Reti sequenziali: le uscite dipendono dagli
ingressi e dalle uscite precedenti
(Effetti di memoria: latch, flip-flop)
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
Q = stato precedente
Q’=Stato successivo
Latch RS
r
Q
s
Q
Dario Bianchi - 2003
Fond. Informatica - Ing. Civile
R
0
0
0
0
1
1
1
1
S
0
0
1
1
0
0
1
1
Q Q’
0 0
1 1
0 1
1 1
0 0
1 0
0 1 -