01-Codifica binaria-Esercizi - Ingegneria elettrica ed elettronica

Università degli Studi di Cagliari
Corso di Laurea in Ingegneria Biomedica (Industriale), Chimica, Elettrica
Un esercizio semplice
FONDAMENTI DI INFORMATICA 1
Dimostrare che A * A’ = 0 e A + A’ = 1
Si usino le tabelle di verità
http://www.diee.unica.it/~marcialis/FI1
A.A. 2008/2009
A
0
1
Docente: Gian Luca Marcialis
A’
1
0
A * A’
0
0
A + A’
1
1
Esercitazione
ALGEBRA DI BOOLE
CODIFICA BINARIA DELL’INFORMAZIONE
Fondamenti di Informatica 1 - A.A. 2008/09 - Ing. Gian Luca Marcialis
Il teorema di De Morgan
Semplificazione di espressioni booleane
Si semplifichi la seguente espressione applicando le
proprietà e i teoremi dell’algebra booleana:
A*B’ + C*A’ + A*C
Soluzione:
Si verifichi l’uguaglianza (A + B)’ = A’ * B’ utilizzando
le proprietà dell’algebra booleana
le tabelle di verità
Soluzione
= C * (A’ + A) + A*B’ =
{prop. distributiva}
= C + A*B’
{prop. El. Complementare + neutro}
Verificare che il numero di operatori booleani richiesti dopo la
semplificazione sia inferiore a quello iniziale
Per la proprietà dell’elemento complementare: (A+B)’ * (A+B) = 0
Quindi anche A’ * B’ * (A+B) = 0
Sviluppando l’espressione precedente:
A’ * B’ * A + A’ * B’ * B = A’ * A * B + A’ * B’ * B = 0 + 0 = 0 c.v.d.
Fondamenti di Informatica 1 - A.A. 2008/09 - Ing. Gian Luca Marcialis
2
− Inizialmente: 3 AND, 2 OR, 2 NOT
− Semplificando: 1 AND, 1 OR, 1 NOT
3
Fondamenti di Informatica 1 - A.A. 2008/09 - Ing. Gian Luca Marcialis
4
Dal compito del 8/7/2008
Dal compito del 4/2/2009
Semplificare la seguente espressione con i teoremi
dell’algebra booleana:
A*B’ + B*C + A*C’
Soluzione
= A * (B’ + C’) + B*C =
= A * (B*C)’ + B*C =
= (A + B*C) * ((B*C)’ + B*C) =
= A + B*C
{commutatività + distributività}
{ De Morgan}
{distributività + el. complementare}
Esprimere la variabile Esame_Superato in funzione delle precedenti,
secondo le regole di Fondamenti di Informatica 1
Soluzione:
− Lo scritto ha voto > 20 Scritto_Soddisfacente == 1
− Oppure,
• Lo scritto ha voto >= 16 Scritto_Insufficiente’ == 1
• E l’orale è stato superato Orale_Superato == 1
Nota bene: la forma ottenuta è del tipo C + A*B’ (vedi slide n. 4)
5
Esercizi di aritmetica binaria
Fondamenti di Informatica 1 - A.A. 2008/09 - Ing. Gian Luca Marcialis
6
Aritmetica in virgola fissa
Convertire 1011, espresso in cifre binarie, nella
rappresentazione decimale
Soluzione
Si usa l’algoritmo di conversione:
X = 1*23 + 0*22 + 1*21 + 1*20 = 8 + 0 + 2 + 1 = 1110
Convertire il decimale 11 in binario
Soluzione:
Algoritmo delle divisioni successive. Il resto corrisponde alle cifre
binarie a partire da quella meno significativa
11/2={quoz. 5, resto 1}; 5/2 = {2, 1}; 2/2 = {1, 0}; 1/2 = {0, 1}
Fondamenti di Informatica 1 - A.A. 2008/09 - Ing. Gian Luca Marcialis
Scritto_Soddisfacente == 1 voto conseguito allo scritto > 20
Orale_Superato == 1 orale OK
Scritto_Insufficiente == 1 voto conseguito allo scritto < 16
Esame_Superato = Scritto_Soddisfacente + Orale_Superato * Scritto_Insufficiente’
Infatti Esame_Superato == 1 quando:
Verificare l’uguaglianza con le tavole di verità
Fondamenti di Informatica 1 - A.A. 2008/09 - Ing. Gian Luca Marcialis
Date tre variabili booleane, che descrivono tre eventi relativi all’esame di
Fondamenti di Informatica 1:
7
Esprimere 13.7510 in binario
Soluzione
Si separano parte intera e parte frazionaria
Per la parte intera si usa l’algoritmo delle divisioni successive,
ottenendo: 13 = 1101
Per la parte frazionaria si usa l’algoritmo delle moltiplicazioni
successive 0.75 = 0.11
− Ottenuto come segue: 0.75 * 2 = 1.5; 0.5 * 2 = 1.0
− Poiché la parte frazionaria dopo l’ultima iterazione è zero,
l’algoritmo termina
Quindi: 13.7510 = 1101.112
Fondamenti di Informatica 1 - A.A. 2008/09 - Ing. Gian Luca Marcialis
8
Alcuni semplici algoritmi in pseudocodice: l’algoritmo del prodotto
Conversione in virgola mobile
Esprimere il valore dell’esercizio precedente in virgola
mobile secondo la convenzione 1.b * 2E
‘b’ è la parte della mantissa che precede l’1 più
significativo, unico valore in parte intera
Soluzione
1101.11 = 1101.11 * 23 * 2-3 = 1.10111 * 23
Esprimendo per esempio l’esponente in segno e valore con tre bit
(quello più significativo, posto a zero, indica segno positivo):
1.10111 * 2011
Si ottiene dunque b  10111, E  011
Fondamenti di Informatica 1 - A.A. 2008/09 - Ing. Gian Luca Marcialis
9
L’algoritmo della potenza
Con lo stesso criterio precedente, voglio implementare l’algoritmo dell’elevamento a
potenza Y = BE
In questo caso abbiamo una “produttoria”:
E
Y = ∏ B = B ⋅ B ⋅ ... ⋅ B = B E
i =1
Soluzione
Appoggiamoci sempre ad i come “contatore”
L’espressione A = A + B può anche essere A = A * B che significa “prendo il vecchio valore di A, gli
moltiplico B ed il risultato lo assegno ad A”
Input: B, E; Output: Y = BE
i=1;
Y=1
Finché i<=E
− Y=Y*B
− i=i+1
Ripeti
Abbiamo anticipato l’espressione “Finché” così l’algoritmo funziona anche se E = 0.
Fondamenti di Informatica 1 - A.A. 2008/09 - Ing. Gian Luca Marcialis
11
Si supponga di implementare l’algoritmo del prodotto di due valori X e N come N
volte la somma di X
In altri termini, la seguente sommatoria:
N
Y = ∑ X = X + X + ... + X = X ⋅ N
Soluzione
i =1
Utilizziamo i come indice per contare il numero di volte che sommiamo X con sé stesso
Ricordando che l’espressione A = A + B significa: “prendo il vecchio valore di A, gli sommo B, ed il risultato
lo assegno di nuovo ad A”, posso scrivere l’algoritmo come segue:
−
−
−
−
Input: X e N; Output Y = X * N
i=0
Y=0
Ripeti
• Y=Y+X
• i=i+1
− Finché i < N
Fondamenti di Informatica 1 - A.A. 2008/09 - Ing. Gian Luca Marcialis
10