Algebra di Boole L’algebra di Boole è un formalismo che opera su variabili (dette variabili booleane o variabili logiche o asserzioni) che possono assumere due soli valori: –Vero –Falso L’algebra booleana nasce come tentativo di definire in forma algebrica processi di tipo logico-deduttivo Tuttavia, poiché di fatto l’algebra di Boole opera su variabili binarie, i suoi operatori possono essere inclusi fra gli operatori dell’algebra binaria. Algebra di Boole Sulle variabili booleane è possibile definire delle funzioni (dette funzioni booleane o logiche) e anch’esse possono assumere i due soli valori vero e falso. Le funzioni booleane possono essere definite tramite le tabelle di verità. Una tabella di verità di una funzione di N variabili ha 2N righe. X1 X2 X3 F 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 1 1 0 1 0 1 1 1 1 0 1 1 1 1 1 1 Operatori ed Espressioni Booleane L’algebra di Boole si basa su un insieme di operatori: – AND (indicato in genere dal simbolo × ) – OR (indicato in genere dal simbolo + ) – NOT (indicato in genere dal simbolo - ) – XOR (indicato in genere dal simbolo ) – NAND (indicato in genere dal simbolo ) – NOR (indicato in genere dal simbolo ) In realtà, qualunque funzione booleana può essere realizzata utilizzando 2 soli operatori: AND e NOT oppure OR e NOT NOT - AND - OR X 0 1 NOT 1 0 X1 X2 AND 0 0 0 1 0 0 0 1 0 1 1 1 X1 0 1 0 1 X2 0 0 1 1 OR 0 1 1 1 Il risultato è la negazione della variabile Il risultato è 1 (Vero) se entrambe le variabili hanno valore 1 Il risultato è 1 (Vero) se almeno una delle variabili ha valore 1 XOR - NAND - NOR X1 X2 XOR 0 0 0 1 0 1 0 1 1 1 1 0 X1 X2 NAND 0 0 1 1 0 1 0 1 1 1 1 0 X1 X2 NOR 0 0 1 1 0 0 0 1 0 1 1 0 Il risultato è 1 (Vero) se una sola delle due variabili ha valore 1 NAND (X1, X2) = NOT (AND (X1,X2)) NOR (X1, X2) = NOT (OR (X1, X2)) Interpretazione logica degli operatori Gli operatori booleani possono essere utilizzati per rappresentare regole deduttive di tipo logico. Le variabili possono rappresentare dei “fatti” (evidenze) che possono essere dedotte le une dalle altre. Es. A = squame; C=AxB B = nuota; C = pesce; se ha le squame e nuota, allora è un pesce ( e viceversa ). In questo caso il segno = significa “ se e solo se ”. A -> B (se A è vero allora B è vero) vale solo in una direzione. Interpretazione logica degli operatori Se si ha una operazione del tipo: A*B (* indica una generica operazione), il risultato è vero se: * condizione OR A o B (o entrambe) sono vere AND sia A che B sono vere XOR A o B (ma non entrambe) sono vere Funzioni logiche e calcolatori Il calcolatore, oltre alle funzioni matematiche, può eseguire anche funzioni logiche che permettono di fare elaborazioni che operano anche sui singoli bit. Si esegue l’operazione fra bit in posizioni corrispondenti. Es. A = 11101001 AxB B = 01001110 11101001 01001110 01001000 Funzioni logiche e calcolatori Alle funzioni booleane si aggiungono anche altre funzioni che possono essere utili nella manipolazione di singoli bit. Importante è l’operazione di shift (scorrimento) Shift a destra (right shift) 11100110 ---> 01110011 Shift a sinistra (left shift) 11100110 ---> 111001100 Lo shift può anche fare scorrere il numero di più di una posizione. Funzioni logiche e calcolatori Se ho un byte col seguente contenuto: 11100110 e voglio il valore del bit più significativo posso fare un AND con 10000000 11100110 10000000 10000000 seguito da uno shift a destra di 7 posizioni 00000001 ---> Il bit più significativo è 1