FUNZIONI BOOLEANE. Vero Falso

Documenti analoghi
Rappresentazione in virgola mobile (floating-point) Rappresentazione in virgola mobile (floating-point)

Rappresentazione in virgola fissa (fixed-point) Rappresentazione di Numeri Reali. Conversione decimale-binario di numeri non interi

Fondamenti di Informatica

Informatica e Bioinformatica: Circuiti

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Lezione2: Circuiti Logici

Circuiti Logici. Pagina web del corso:

George BOOLE ( ) L algebra booleana. (logica proposizionale)

LA CODIFICA DELLE INFORMAZIONI

Elementi di Informatica A. A. 2016/2017

I.3 Porte Logiche. Elisabetta Ronchieri. Ottobre 13, Università di Ferrara Dipartimento di Economia e Management. Insegnamento di Informatica

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

CIRCUITI DIGITALI. La grandezza fisica utilizzata nella maggior parte dei circuiti digitali è la differenza di potenziale (tensione).

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Fondamenti di Informatica

Dispensa su. Funzioni Booleane. Jianyi Lin Università degli Studi di Milano

Circuiti digitali combinatori

Corso di studi in Ingegneria Elettronica A.A. 2006/2007. Calcolatori Elettronici. Esercitazione n 2

associate ai corrispondenti valori assunti dall uscita.

Fondamenti di Informatica

Fondamenti di Informatica

Architettura degli Elaboratori e Laboratorio. Matteo Manzali Università degli Studi di Ferrara Anno Accademico

Prof. Pagani Corrado ALGEBRA BOOLEANA

Lezione 5. Sommario. La logica booleana. I principi della logica booleana Gli operatori logici

Algebra Booleana. 13. Rif:

Logica booleana. Bogdan Maris ( )

Algebra di Boole X Y Z V. Algebra di Boole

Calcolo numerico e programmazione Elementi di logica

Introduzione alla logica proposizionale

Minimizzazione di reti/funzioni logiche con le Mappe di Karnaugh. 12 ottobre 2015

Circuiti e reti combinatorie. Appendice A (libro italiano) + dispense

Definizioni. Esempi di alfabeti

Logica binaria. Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna

Esercitazione 2: Algebra di Boole. Titolo presentazione sottotitolo. Ing. Stefano Marelli. Milano, XX mese 20XX

ELEMENTI DI ALGEBRA BOOLEANA

Università degli Studi di Cagliari Dipartimento di Ingegneria Elettrica ed Elettronica ALGEBRA BOOLEANA

Y = A + B e si legge A or B.

17/10/16. Espressioni Booleane

Richiami di Algebra di Commutazione

Dispensa di Informatica I.5

Insegnamento Informatica CdS Scienze Giuridiche

HSA HSA HARDWARE SYSTEM ARCHITECTURE. Livelli. Livello assemblativo. Livello di. Sistema Operativo. Livello di. linguaggio macchina.

Operatori di relazione

Fondamenti di Informatica. Algebra di Boole

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

LE PORTE LOGICHE. Ingresso B Ingresso A Uscita OUT

senza stato una ed una sola

Università degli Studi di Roma Tor Vergata Facoltà di Ingegneria Corso di Laurea in Ingegneria Medica Operazioni logiche

Reti Logiche Combinatorie

Per gli esercizi sulla algebra booleana, si consiglia di verificare tramite tabelle di verità le equivalenze logiche proposte sulle dispense.

Fondamenti dell Informatica Algebra di Boole. Prof.ssa Enrica Gentile

Algebra di Boole. Tavole di verità. Fondamenti di Informatica Algebra di Boole. Si basa su tre operazioni logiche: AND (*) OR (+) NOT (!

Le variabili logiche possono essere combinate per mezzo di operatori detti connettivi logici. I principali sono:

Operatori logici e algebra di boole

Funzioni, espressioni e schemi logici

La codifica dell informazione

Circuiti digitali. Operazioni Logiche: Algebra di Boole. Esempio di circuito. Porte Logiche. Fondamenti di Informatica A Ingegneria Gestionale

Algebra di Boole Algebra di Boole

Reti logiche: analisi, sintesi e minimizzazione Esercitazione. Venerdì 9 ottobre 2015

Abilità Informatiche e Telematiche

Codifica binaria: - valori logici e algebra di Boole -

Algebra di Boole. Andrea Passerini Informatica. Algebra di Boole

APPUNTI DI ELETTRONICA DIGITALE

Precedenza degli operatori

Le porte logiche. Elettronica L Dispense del corso

Informazione binaria: - rappresentazione di valori logici -

PORTE LOGICHE. Si effettua su due o più variabili, l uscita assume lo stato logico 1 se almeno una variabile di ingresso è allo stato logico 1.

Appunti di informatica. Lezione 3 anno accademico Mario Verdicchio

Algebra di commutazione

Fondamenti di programmazione parte 2. Elementi di informatica IGLP

Algebra di Boole e reti logiche. 6 ottobre 2017

Informatica. Logica e Algebra di Boole

Logica binaria. Cap. 1.1 e 2.1 dispensa

CODIFICA DELLE INFORMAZIONI MODULO 5

0. ALGEBRA DI BOOLE E SISTEMI DI NUMERAZIONE

Elementi di informatica

Introduzione ed elementi dell'algebra di Boole

Algebra di Commutazione

Segnali in circuiti elettronici digitali

Algebra di Boole. Introdotta nel 1874 da George Boole per fornire una rappresentazione algebrica della logica

Lez2 mar 7 Ottobre 2008 Op. aritmetiche/logiche arch. Elaboratore

Proposizioni logiche e algebra di Boole

Elementi di Algebra e Logica Determinare la tavola della verità di ciascuna delle seguenti forme proposizionali:

Algebra di Boole. Modulo 2. Università di Cagliari Dipartimento di Ingegneria Elettrica ed Elettronica Laboratorio di Elettronica (EOLAB)

ALGEBRA DI BOOLE. In caso di errori di battitura o se si volesse contribuire a migliorare la seguente guida contattare:

Esame di INFORMATICA (*) Operazioni Aritmetiche: Somma. Lezione 3. Operazioni Aritmetiche: Somma. Operazioni Aritmetiche: Somma

Algebra Booleana, Funzioni Logiche e Circuiti Logici

Parte IV Indice. Algebra booleana. Esercizi

Rappresentazione dell informazione

Reti logiche: introduzione

Architettura degli Elaboratori 4 - Reti Combinatorie e Algebra di Boole

Aritmetica in virgola mobile Algebra di Boole e reti logiche Esercizi. Mercoledì 8 ottobre 2014

Algebra e circuiti elettronici

CODIFICA DELLE INFORMAZIONI MODULO 5

Conversione binario-ottale/esadecimale. Conversione binario-ottale/esadecimale. Rappresentazione di Numeri Interi Positivi (numeri naturali)

Algebra di Boole Esercizi risolti

Fondamenti di Informatica B

Notazione posizionale. Codifica binaria. Rappresentazioni medianti basi diverse. Multipli del byte

Algebra Booleana. George Boole Wikipedia, the Free Encyclopedia

Transcript:

FUNZIONI BOOLEANE Le funzioni booleane prendono il nome da Boole, un matematico che introdusse un formalismo che opera su variabili (dette variabili booleane o variabili logiche o asserzioni) che possono assumere due soli valori: Vero Falso Tale formalismo è detto algebra booleana e nasce come tentativo di definire in forma algebrica processi di tipo logico-deduttivo. Tuttavia, poiché l algebra di Boole opera su variabili binarie, che possono cioè assumere solo due valori, è possibile definire una corrispondenza fra i valori logici vero e falso e i valori binari e, includendo di fatto gli operatori booleani fra gli operatori dell algebra binaria. Al valore vero viene normalmente fatto corrispondere il valore binario, mentre al valore falso viene fatto corrispondere il valore binario. L algebra booleana è definita su un dominio finito ed estremamente limitato, che comprende solo i due valori vero e falso. In tale dominio è possibile definire funzioni di un numero arbitrario di variabili indipendenti. Le funzioni elementari più comunemente usate rappresentano le operazioni logiche di uso più comune e operano su una o due variabili booleane e producono come risultato un solo valore, anch esso booleano. Le funzioni più comunemente usate sono 3: NOT (opera su una sola variabile; il risultato è la negazione della variabile) AND (congiunzione logica di due variabili; il risultato è vero se entrambe hanno valore vero) OR (disgiunzione logica di due variabili; il risultato è vero se almeno una ha valore vero) E possibile dimostrare che qualunque funzione booleana è equivalente, cioè produce gli stessi risultati parità di valori assunti delle variabili su cui opera, ad una opportuna composizione di 2 di questi operatori, di cui uno sia NOT. A puro titolo di esempio, la funzione F(A,B,C) = (A AND B) OR C è equivalente alla funzione F2(A,B,C) = NOT ((NOT A) OR (NOT B)) OR C. Operatori e funzioni booleane possono essere descritte attraverso le cosiddette tabelle di verità, che associano a ciascuna possibile combinazione di valori delle variabili il corrispondente valore della funzione. In ogni riga sono quindi riportati i valori corrispondenti ad una delle possibili combinazioni delle variabili indipendenti, seguiti dal valore che assume la funzione in corrispondenza di tale combinazione. Le tabelle di verità per NOT, AND e OR sono le seguenti: X NOT X X X 2 X AND X 2 X X 2 X OR X 2 Si può notare che la tabella di verità di una funzione ad N variabili ha N+ colonne, una per ogni variabile di ingresso più una per il valore che assume la funzione. Inoltre, ovviamente, una tabella di verità ha tante righe quante sono le combinazioni possibili che le variabili di ingresso possono generare. Poiché i valori assunti da ciascuna variabile sono soltanto 2, con N variabili si hanno 2 N possibili combinazioni. Quindi una funzione booleana di N variabili potrà essere rappresentata da una tabella di verità costituita da N+ colonne e 2 N righe. Pertanto l operatore NOT, che opera su una singola variabile (N=), ha una tabella di verità costituita da 2 righe e 2 colonne, mentre le tabelle di verità relative agli operatori AND e OR, che operano su 2 variabili (N=2), sono costituite da 4 righe e 3 colonne.

Un altra considerazione che si può fare è relativa al numero di funzioni che possono essere ottenute a partire da un certo numero di variabili. Poiché ogni riga (corrispondente ad una possibile combinazione delle variabili di ingresso) può presentare due possibili valori nella colonna relativa al valore che la funzione assume in corrispondenza di tale combinazione, il numero di combinazioni possibili dei valori di uscita (e quindi di funzioni diverse che si possono generare) sarà 2 elevato al numero delle righe, che abbiamo detto essere 2 N, quindi 2 2 N. (Per analogia, ad esempio, nel Totocalcio, in cui si hanno 3 possibili risultati per ognuna delle 3 partite, il numero di possibili combinazioni vincenti è 3 3 ). Pertanto, ad esempio, è possibile ottenere 4 diverse funzioni di una sola variabile X, in cui l uscita:. è uno in entrambi i casi (X= e X=) 2. è zero in entrambi i casi 3. è uguale al valore assunto dalla variabile di ingresso (funzione identità) 4. è la negazione della variabile di ingresso (funzione NOT) Nel caso di 2 variabili avremo invece 6 possibili funzioni, fra le quali sono particolarmente importanti la funzione XOR (OR esclusivo, il valore dell uscita è vero se o l una o l altra delle variabili di ingresso, ma non entrambe, hanno valore vero) e le funzioni NAND e NOR che sono la negazione di AND e OR, cioè i cui valori sono la negazione dei valori assunti da AND e OR in corrispondenza delle omologhe configurazioni delle variabili di ingresso. X X 2 X XOR X 2 X X 2 X NAND X 2 X X 2 X NOR X 2 Come si può osservare, poiché i valori che le variabili e le funzioni possono assumere sono solo 2, è molto facile che funzioni ottenute mediante combinazioni diverse di operatori risultino equivalenti. Del resto, è stato detto che tutte le funzioni booleane possono essere espresse utilizzando la coppia di operatori NOT e AND, oppure la coppia NOT e OR. Per verificare che due funzioni booleane siano equivalenti, come ad esempio che X NAND X 2 equivale a NOT (X AND X 2 ), basterà quindi verificare che le loro tabelle di verità siano uguali, che cioè facciano corrispondere lo stesso valore a uguali combinazioni delle variabili su cui sono definite. INTERPRETAZIONE LOGICA DEGLI OPERATORI Come già detto, il primo obiettivo con cui è stata definita l algebra booleana è quello di rappresentare operazioni logiche in forma di operazioni algebriche. Da questo punto di vista, è possibile identificare le variabili di ingresso delle funzioni booleane come rappresentazioni di fatti o di asserzioni. 2

Ad esempio, se si considera il dominio logico delle figure geometriche e si associa alla variabile X l informazione ha 3 lati, alla variabile X 2 l informazione tutti i lati sono uguali, alla variabile A il concetto è un triangolo e alla variabile A 2 il concetto è un triangolo equilatero si potranno determinare le seguenti relazioni: A = X A 2 = X AND X 2 In questo caso il simbolo = rappresenta la relazione logica di equivalenza, quindi le espressioni precedenti vanno lette come una figura geometrica è un triangolo se e solo se ha 3 lati e una figura geometrica è un triangolo equilatero se e solo se ha tre lati e tutti i lati sono uguali. In modo analogo espressioni logiche possono essere utilizzate per esprimere criteri che devono essere soddisfatti, ad esempio quando si ricercano informazioni in una base di dati o con un motore di ricerca su Internet. In quest ultimo caso, l interfaccia utente permette di solito (esplicitamente o implicitamente) di esprimere criteri di ricerca sotto forma di funzioni booleane, le cui variabili sono le parole che le pagine Web che si stanno cercando devono contenere: se la parola è presente nella pagina, allora la corrispondente variabile assumerà il valore vero. I siti elencati saranno tutti quelli per cui l espressione booleana che viene usata come criterio di selezione ha come valore vero. Quindi, se si cercano le pagine che contengono informazioni su cavalli o cani (e non necessariamente su entrambi) si potrà usare come criterio cavalli OR cani. Se invece si cercano informazioni sui cavalli, ma si vogliono evitare le pagine in cui si parla di cavalli come unità di misura di potenza dei motori, si potrà adottare il criterio cavalli AND NOT motore. Un altro esempio pratico: se cerchiamo una ricetta per una macedonia di frutta e utilizziamo macedonia come criterio di ricerca otteniamo anche (e soprattutto) risultati che riguardano la Macedonia intesa come regione geografica. Occorre quindi restringere la ricerca, utilizzando un criterio più articolato, ad es. macedonia AND frutta. 3

OPERATORI BOOLEANI E CALCOLATORI Dal momento che gli operatori booleani possono essere assimilati in ogni caso a funzioni di variabili binarie, non solo vengono inclusi nel set di istruzioni delle CPU, ma tutti i circuiti digitali (reti logiche) che costituiscono l hardware di un calcolatore sono composti da un elevato numero di circuiti elementari (porte logiche) che realizzano gli operatori logici di base (NOT, AND, OR, NAND, NOR, XOR). Quindi la progettazione di una rete logica, dalle più semplici fino ai microprocessori, che sono sicuramente le più complesse, può essere ridotta alla ricerca della funzione logica che produce le uscite desiderate in presenza di certi ingressi. Tuttavia, come si è detto, ci sono molti modi per ottenere la stessa funzione booleana utilizzando diverse combinazioni di operatori logici elementari. Quindi la soluzione ottima per il progetto sarà quella che non solo rispetta le specifiche del progetto (cioè realizza correttamente la funzione desiderata), ma che riesce anche a farlo utilizzando il minor numero di porte logiche. Infatti un circuito più semplice (con meno componenti) è non solo più economico, ma anche più veloce nell eseguire l operazione per cui è stato progettato. Infatti, da un lato, i segnali elettrici che vengono elaborati all interno di un calcolatore si propagano ad una velocità prossima a quella della luce, che è elevatissima ma comunque finita. Pertanto abbreviare il percorso che i segnali devono attraversare per compiere una certa operazione comporta una riduzione del tempo di esecuzione dell operazione stessa. Dall altro lato, si deve tenere presente che, ogni volta che si attiva una porta logica, i circuiti che la compongono richiedono un tempo significativo (anche se molto piccolo, tipicamente inferiore a -6 / -9 secondi) per raggiungere una configurazione stabile che consente di leggerne il risultato correttamente. Per questo motivo, ridurre il numero di porte logiche comporta una riduzione del tempo richiesto per eseguire l operazione che queste realizzano. A livello di operazioni eseguite dalla CPU, si è visto come i dati su cui queste vengono eseguite siano normalmente raggruppati in byte o in multipli di un byte. Tuttavia abbiamo visto che gli operatori booleani operano su variabili che corrispondono a singoli bit. Quindi, come si può interpretare l istruzione A AND B, dove A e B sono, ad esempio, due parole da 8 bit? Il risultato dell applicazione di un operatore booleano a parole di più bit non è altro che una parola della stessa lunghezza in cui ciascun bit rappresenta il risultato dell operatore applicato ai due bit che si trovano in posizioni corrispondenti nei due operandi (v. Esempio ). A = A AND B = B = A OR B = A B A AND B (ogni bit è il risultato dell AND fra i due bit corrispondenti degli operandi) A OR B (ogni bit è il risultato dell OR fra i due bit corrispondenti degli operandi) Esempio L operatore AND può essere utilizzato per leggere il contenuto di un singolo bit all interno di una parola. Dalla tabella di verità dell operatore AND si può vedere che X AND =, qualunque sia il valore di X (infatti, perché l operatore AND restituisca il valore vero bisogna che entrambi gli operandi abbiano valore vero). Analogamente, X AND = X. Allora (v. Esempio 2) per conoscere il valore del bit più significativo di una parola K, ad es. di 8 bit, si può eseguire l operazione K AND, cioè applicare l operatore AND a K e a una parola composta da tutti zeri eccetto un nella posizione che vogliamo leggere. In questo modo, il risultato per i bit meno significativi sarà sicuramente, mentre il risultato sul bit più significativo sarà uguale al contenuto del bit più significativo di K. Quindi basterà verificare se la parola ottenuta è o meno uguale a zero (il confronto con lo zero fa sempre parte del set di istruzioni di una CPU): se è allora il bit che abbiamo letto ha valore, se è diversa da allora il bit è uguale a. 4

Determinare il valore del quinto bit (a partire dal meno significativo) della seguente parola: K = * Eseguo K AND Il risultato è, diverso da, quindi il bit che ho letto è uguale ad. Se fosse stato il risultato sarebbe stato. Esempio 2 Agli operatori booleani già visti si aggiungono anche i due operatori di shift (scorrimento) a destra e shift a sinistra. Il risultato di tali operatori è una parola derivata dalla parola cui sono applicati facendo scorrere ogni bit di una posizione a destra o a sinistra. Nel caso dello shift a destra (Shift Right, SHR), il bit più significativo diventa e il bit meno significativo sparisce a destra; nel caso dello shift a sinistra (Shift Left, SHL), il bit meno significativo diventa e, se consideriamo una rappresentazione con un numero finito di bit, il bit più significativo sparisce a sinistra, altrimenti si sposta di una posizione a sinistra come tutti gli altri e la parola risultante risulta più lunga di un bit rispetto a quella cui l operatore è stato applicato. P = SHR(P) = (ogni bit si è spostato a destra di una posizione; il MSB è diventato ). SHL(P) = se si hanno a disposizione più di 8 bit per rappresentare il risultato se anche il risultato è rappresentato su 8 bit (ogni bit si è spostato a sinistra di una posizione; il LSB è diventato ; il MSB è scomparso da sinistra). Esempio 3 5