Codifica binaria: - valori logici e algebra di Boole - Ingegneria Meccanica e dei Materiali Università degli Studi di Brescia Prof. Massimiliano Giacomin
Tipologie di codici Per la rappresentazione di: caratteri alfabetici e testi valori logici numeri naturali numeri interi relativi [val assoluto e segno, complemento a due] numeri reali [virgola fissa e virgola mobile] suoni, immagini e sequenze video Codici per la rilevazione e correzione di errori Codici di compressione (senza con perdita) Informatica e Programmazione Università di Brescia 2
Le radici GEORGE BOOLE (1815-1864) An Investigation of the Laws of Thought (1854) ALGEBRA BOOLEANA 4
Una riflessione sull algebra numerica -(x + y) ESPRESSIONE - Costanti (valori) - Variabili - Operatori Le variabili denotano (contengono) valori numerici (es. interi) Operatori binari (es. +) e unari (es. ) Valore dell espressione determinabile da valori delle variabili, mediante applicazione operatori Equivalenza di espressioni: -(x + y) = -(x) - y uguale valore per qualunque coppia di valori assunti da x, y Elementi di Informatica e Programmazione Università di Brescia 5
OBIETTIVO: introdurre un formalismo per esprimere FATTI ESEMPIO: - r1 contiene l età di un utente acquisita da tastiera - si vuole fare in modo che r2 indichi se è maggiorenne SE(r1>=18) r2 VERO SE(r1<18) r2 FALSO I fatti possono essere veri o falsi Elementi di Informatica e Programmazione Università di Brescia 6
Valori logici e codifica binaria Valore logico: esprime il valore di verità di un determinato fatto ES: Il voto del compito di informatica è sufficiente (F1) F1 è vero oppure falso, non entrambi Dato un fatto, dobbiamo codificare i suoi possibili valori logici. 2 oggetti da rappresentare V (vero) F (falso) E quindi sufficiente 1 bit, ad esempio con la codifica: - falso: 0 - vero: 1 Elementi di Informatica e Programmazione Università di Brescia 7
Variabile booleana Così come si usano variabili numeriche per memorizzare valori numerici (es. temperatura_aria) in modo simile si possono usare variabili booleane per memorizzare il valore di verità di un fatto Esempio: uso una variabile F1 per il fatto che il compito sia suff. se (voto>=18) allora F1 = V Definizione Variabile booleana: variabile binaria che può assumere uno dei due valori logici denotati con 0 e 1 (oppure Falso e Vero) DOMINIO: {0, 1} (oppure: {F, V}) Elementi di Informatica e Programmazione Università di Brescia 8
Espressione booleana (informalmente) I fatti possono essere composti a partire da altri fatti mediante congiunzione, disgiunzione, negazione, ho_l automobile e ho_la_benzina ho_l automobile o ho_la_bicicletta non ho_l automobile Il loro valore di verità dipende da quello dei fatti elementari ES: se ho_l automobile è VERO, ho_la_benzina è FALSO, ho_l automobile e ho_la_benzina è FALSO Definizione degli operatori booleani Elementi di Informatica e Programmazione Università di Brescia 9
Operatori booleani Così come per le variabili numeriche esistono operatori aritmetici (es: +, -, *, ), allo stesso modo per le variabili booleane esistono operatori booleani OPERATORI BINARI (due argomenti) V F V F op V F OPERATORI UNARI (un argomento) V F op V F Elementi di Informatica e Programmazione Università di Brescia 10
Operatori booleani più importanti NOT Negazione Logica not(x), x, ~x AND Prodotto Logico x and y, x y, xy OR Somma Logica x or y, x + y Tabelle di verità (NB: 0 equivale a F, 1 equivale a T) x x 0 1 1 0 NOT x 1 x 0 x 1 x 0 0 0 0 0 1 0 1 0 0 1 1 1 AND x 1 x 0 x 1 + x 0 0 0 0 0 1 1 1 0 1 1 1 1 OR Elementi di Informatica e Programmazione Università di Brescia 11
Formule (o espressioni) booleane (formalmente) Esempi: x + y ((x+y) z) Definizione: 1. Le costanti 0 e 1 e le variabili (simboli a cui possono essere associati i valori 0 e 1) sono formule booleane 2. Se E, E 1 ed E 2 sono formule booleane lo sono anche (E 1 +E 2 ), (E 1 E 2 ) e (E) 3. Non esistono altre formule oltre a quelle che possono essere generate da un numero finito di applicazioni delle regole 1 e 2 Elementi di Informatica e Programmazione Università di Brescia 12
Riassumendo Per elaborare numeri (es: gli interi relativi) - Costanti (valori) - Variabili ESPRESSIONI - Operatori Anche in questo contesto abbiamo gli stessi concetti - FALSO e VERO sono i valori elaborati - ho_l automobile, sono variabili che assumono questi valori - (Non ho_l automobile) o (Non ho_la_bicicletta) sono ESPRESSIONI costruiti con gli operatori non, o, e Elementi di Informatica e Programmazione Università di Brescia 13
Tabelle di verità di formule booleane Valore di verità per ogni combinazione di valori delle variabili ESEMPIO auto bici auto bici auto bici 0 0 1 0 1 1 1 0 1 1 1 0 Elementi di Informatica e Programmazione Università di Brescia 14
Equivalenza di espressioni booleane (1) Espressioni diverse possono indicare il medesimo fatto Non (ho_l automobile e ho_la_bicicletta) (Non ho_l automobile) o (Non ho_la_bicicletta) Come si può verificare formalmente? Cfr. il concetto di espressioni equivalenti nel contesto numerico! Elementi di Informatica e Programmazione Università di Brescia 15
Equivalenza di espressioni booleane (2) Formule equivalenti: per ogni combinazione di valori delle variabili ESEMPIO 1 auto bici = auto+bici le formule restituiscono lo stesso valore Un modo per verificare l equivalenza: tabella di verità auto bici auto bici auto bici auto bici auto+bici 0 0 0 1 1 1 1 0 1 0 1 1 0 1 1 0 0 1 0 1 1 1 1 1 0 0 0 0 Elementi di Informatica e Programmazione Università di Brescia 16
ESEMPIO 2 Assorbimento: x(x+y) = x x y x+y x(x+y) 0 0 0 0 0 1 1 0 1 0 1 1 1 1 1 1 Elementi di Informatica e Programmazione Università di Brescia 17
NB: potevamo usare anche una diversa simbologia per i valori Assorbimento: x(x +y) = x x y x+y x(x+y) F F F F F V V F V F V V V V V V Elementi di Informatica e Programmazione Università di Brescia 18
o per gli operatori Assorbimento: x AND (x OR y) = x x y x OR y x AND (x OR y) F F F F F V V F V F V V V V V V Elementi di Informatica e Programmazione Università di Brescia 19
ESEMPIO 3 x 1 + x 2 + x 2 x 3 + x 2 x 3 = x 1 + x 2 + x 3 x 3 x 2 x 1 x 2 x 2 x 3 x 2 x 3 x 1 +x 2 +x 2 x 3 +x 2 x 3 x 1 +x 2 +x 3 0 0 0 1 0 0 0 0 0 0 1 1 0 0 1 1 0 1 0 0 0 0 1 1 0 1 1 0 0 0 1 1 1 0 0 1 0 1 1 1 1 0 1 1 0 1 1 1 1 1 0 0 1 0 1 1 1 1 1 0 1 0 1 1 Elementi di Informatica e Programmazione Università di Brescia 20
Il concetto di algebra Per elaborare numeri (es: i numeri relativi Z) si utilizzano operatori che elaborano i valori appartenenti al dominio considerato L impianto formale sottostante è il concetto di algebra - insieme di supporto (i valori utilizzati) - insieme degli operatori fondamentali (devono essere chiusi rispetto all insieme di supporto) Es: (Z, {+, -}) è un algebra, (N, {+, -}) non lo è Elementi di Informatica e Programmazione Università di Brescia 21
Algebra di Boole Una specifica algebra che include: un insieme di supporto A (l insieme {0,1} o {V,F}) due operatori binari: AND ( ) e OR (+) un operatore unario: NOT ( ) [operatori definiti da un insieme di assiomi] E lo strumento matematico su cui si fonda il funzionamento dei circuiti digitali Elementi di Informatica e Programmazione Università di Brescia 22
Assiomi dell algebra di Boole Forma AND Forma OR Commutatività AB = BA Distributività A+BC=(A+B)(A+C) A+B = B+A A(B+C)=AB+AC Identità 1A = A 0+A = A Inverso AĀ = 0 A+Ā = 1 Elementi di Informatica e Programmazione Università di Brescia 23
Proprietà dell algebra di Boole (deducibili dagli assiomi) Forma AND Forma OR Elemento nullo 0A = 0 1+A = 1 Idempotenza AA = A A+A = A Assorbimento A(A+B) = A A+AB=A Associatività (AB)C=A(BC) (A+B)+C=A+(B+C) De Morgan AB = A+B A+B = A B Altre proprietà della negazione logica 1 = 1 0 = 0 Elementi di Informatica e Programmazione Università di Brescia 24
Equivalenza tra formule booleane via algebra di Boole ESEMPIO 1 precedente auto bici = auto+bici direttamente dalla proprietà di De Morgan ESEMPIO 2 precedente x(x+y) = x direttamente dalla proprietà di assorbimento ESEMPIO 3 precedente x 1 + x 2 + x 2 x 3 + x 2 x 3 = x 1 + x 2 + x 3 (x 2 +x 2 ) = x 1 + x 2 + x 3 Elementi di Informatica e Programmazione Università di Brescia 25
ESERCIZIO 0 Giustificando in modo preciso la risposta, si dica se le seguenti espressioni booleane sono tra loro equivalenti: x 1 x 2 + x 1 x 2 x 3 + x 1 x 2 e x 1 x 2 + x 1 x 2 x 3 Elementi di Informatica e Programmazione Università di Brescia 26
ESERCIZIO 0 Giustificando in modo preciso la risposta, si dica se le seguenti espressioni booleane sono tra loro equivalenti: Soluzione 1 Si costruiscono le tabelle di verità e si verifica che sono equivalenti (serve la tabella di verità completa) Soluzione 2 x 1 x 2 + x 1 x 2 x 3 + x 1 x 2 = x 1 x 2 + x 1 x 2 x 3 = x 1 x 2 (1 +x 3 ) = x 1 x 2 Elementi di Informatica e Programmazione Università di Brescia 27
ESERCIZIO 1 Giustificando in modo preciso la risposta, si dica se le seguenti espressioni booleane sono tra loro equivalenti (ovvero, identificano la stessa funzione delle variabili booleane x, y e z): xy + xy + x y e x + y Elementi di Informatica e Programmazione Università di Brescia 28
Soluzione 1 Si costruiscono le tabelle di verità e si verifica che sono equivalenti (serve la tabella di verità completa) Soluzione 2 xy + xy + x y = xy + xy + x y + x y = (x+x) y + x(y+y) = x + y Elementi di Informatica e Programmazione Università di Brescia 29
ESERCIZIO 2 Giustificando in modo preciso la risposta, si dica se le seguenti espressioni booleane sono tra loro equivalenti (ovvero, identificano la stessa funzione delle variabili booleane x, y e z): xy + x+z e x+y + x z [5] Elementi di Informatica e Programmazione Università di Brescia 30
Soluzione Si costruiscono le tabelle di verità (anche parziali) e si riportano uno o più casi (non occorre tutti) in cui non danno lo stesso valore, quindi non sono equivalenti. Volendo, per trovare un caso ci si può aiutare con l algebra booleana notando che i due termini a destra sono equivalenti (ma vedi soluzione errata) P.es. x=0, y=1, z=1 (la prima è 1, la seconda 0) Elementi di Informatica e Programmazione Università di Brescia 31
Soluzione ERRATA xy + x+z e x+y + x z e quindi, verificando che i due termini xy e x+y non sono equivalenti, concludere che le formule non lo sono. NB: è vero che le formule non sono equivalenti, ma questo metodo non lo dimostra perché in altri casi non funziona (cfr la regola i gol in trasferta valgono doppio nelle coppe) Elementi di Informatica e Programmazione Università di Brescia 32
NOTA IMPORTANTE Poichè il dominio non è illimitato, per dimostrare che due formule NON sono equivalenti non si possono trascurare termini equivalenti! Esempio?stabilire se x+1 è equivalente a x+1 Ovviamente sì (valgono entrambe 1)! Ma ragionando come in algebra numerica si direbbe che sono equivalenti sse x=x, cosa non vera! Elementi di Informatica e Programmazione Università di Brescia 33
Esempio precedente leggermente modificato. xy + z+z e x+y + z z Sono equivalenti, perché danno 1 in tutti i casi (il II termine è 1), invece procedendo come prima: xy + z+z e x+y + z z e quindi, verificando che i due termini xy e x+y non sono equivalenti, si concluderebbe che le formule non lo sono. Elementi di Informatica e Programmazione Università di Brescia 34
VADEMECUM PER TEMI D ESAME A) VERIFICARE CHE DUE FORMULE SONO EQUIVALENTI: bisogna dimostrare che danno lo stesso valore in tutti i casi - via tabella di verità, oppure - dimostrando con proprietà algebriche che sono equivalenti a due formule sintatticamente uguali L algebra booleana consente praticamente tutte le operazioni cui si è abituati con l algebra dei numeri, p.es. - raccogliere termini comuni - 0*x=0, 1*x=x ed anche molte altre (es. prop. De Morgan, 1+x=1, ecc.) Elementi di Informatica e Programmazione Università di Brescia 35
B) DIMOSTRARE CHE DUE FORMULE NON SONO EQUIVALENTI: bisogna e basta trovare un caso in cui danno risultato diverso - Errore frequente: semplificare un termine e dimostrare che i termini rimasti sono equivalenti. Questo NON dimostra nulla NB: trovare la risposta esatta con un procedimento sbagliato è valutato come se la risposta fosse sbagliata! Elementi di Informatica e Programmazione Università di Brescia 36
CODIFICA ED ELABORAZIONE DI VALORI LOGICI NEI LINGUAGGI DI PROGRAMMAZIONE
Linguaggio macchina (cenno) Il verificarsi (o meno) di determinate condizioni (es. ultima operazione aritmetica ha dato risultato nullo) sono segnalate ponendo a 1/0 uno specifico bit di un particolare registro Sono tipicamente disponibili istruzioni per la manipolazione di bit corrispondenti agli operatori booleani Esempio and $r1, $r2, $r3 or $r1, $r2, $r3 # $r1 = $r2 AND $r3 (bit a bit) # $r1 = $r2 OR $r3 (bit a bit) Elementi di Informatica e Programmazione Università di Brescia 38
Linguaggio C In C non esiste il tipo booleano e quindi neppure le variabili booleane Esistono però gli operatori logici Cfr. Operatori in C Elementi di Informatica e Programmazione Università di Brescia 39