Logica, Algebra Booleana, Circuiti Esercizio 107 (91) Un programma in linguaggio C contiene la seguente condizione: if ( ! (x==’C’ && y==’I’ && w==’A’ && z==’O’) ) Usando le tecniche dell’algebra Booleana (es. teorema dell’assorbimento, teorema di De Morgan) riscrivere l’espressione in modo che complessivamente richieda un minor numero di operazioni per il suo calcolo. Soluzione Applicando De Morgan xywz x y w z L’espressione diventa if ( (x<>’C’ || y<>’I’ || w<>’A’ || z<>’O’) ) Se x == ‘C’, x significa tutto ciò che non è x e quindi x <> ‘C’ Esercizio 108 (92) Un circuito logico deve realizzare la seguente funzione booleana: y cb b (ac ac ) Si costruisca la tabella di verità del circuito, e si identifichi una versione semplificata della funzione booleana. Soluzione y cb b (ac ac ) bc bc (a a ) bc bc b(c c ) b Da cui si ricava la tabella della verità molto banale. Un altro modo di risolverlo poteva essere quello di costruire la tabella della verità sull’espressione originale o sul primo passaggio Esercizio 109 (93) Due circuiti logici, C1 e C2, realizzano rispettivamente le seguenti funzioni: C1 a b ab C 2 ab a b Si determini se i due circuiti sono equivalenti (nel senso che realizzano la stessa funzione booleana), e quale dei due sia più veloce. Soluzione Il primo circuito rappresenta la funzione di ex or tra a e b, il secondo la funzione di ex nor. Sono quindi diversi. Il più veloce dipende dalla logica utilizzata. Ad es se si utilizzano solo And, or e not, il primo è più veloce. Esercizio 110 (94) controllare testo Una funzione booleana F ha la seguente espressione: F a b c ab Si determinino tutti i valori delle variabili indipendenti per i quali si ha F = 0, e si disegni il circuito logico corrispondente. Soluzione F=0 si ha quando F =1 Semplificando l’espressione si ottiene: F a b c ab a bc a b (a a ) b(c 1) 1 b 1, sempre F=1 sempre vuol dire F=0 mai Il circuito corrispondente si riduce ad F fissa al valore alto (1).