Operatori Logici Derivati e Tabelle di Verità

NAND, NOR, XNOR e il catalogo completo dei sette operatori booleani

Ripasso: i quattro Operatori fondamentali

Nella Lezione A2 abbiamo studiato i quattro operatori logici fondamentali. Prima di proseguire, richiamiamo le parole chiave di ciascuno, perché ci serviranno per costruire i nuovi operatori.

OperatoreParola chiaveL’output è VERO (1) quando…
NOTOpposto…l’input è FALSO (inverte il valore)
ANDTutti…tutti gli input sono VERI
ORAlmeno uno…almeno un input è VERO
XORDiversi…gli input sono diversi tra loro

Ecco le tabelle di verità dei tre operatori a due input, che ci serviranno come punto di partenza.

AND

ABY
000
010
100
111

OR

ABY
000
011
101
111

XOR

ABY
000
011
101
110

Teniamo queste tabelle a portata di mano: tra poco le useremo per costruire, in modo semplicissimo, i tre nuovi operatori.

Il Principio di Derivazione tramite Negazione

Sappiamo già che l’operatore NOT inverte un valore: trasforma ogni 0 in 1 e ogni 1 in 0. Questa proprietà ci permette di creare nuovi operatori a partire da quelli che già conosciamo, semplicemente applicando il NOT al risultato di un operatore esistente.

L’idea è molto semplice. Prendiamo un operatore che già conosciamo (per esempio AND), calcoliamo il suo risultato normalmente e poi applichiamo il NOT a quel risultato. Il risultato è un nuovo operatore il cui output è sempre l’opposto di quello dell’operatore originale: ogni 1 diventa 0 e ogni 0 diventa 1.

Definizione

Il principio di derivazione tramite negazione consiste nell’applicare l’operatore NOT al risultato di un operatore logico esistente, ottenendo un nuovo operatore il cui output è l’inverso esatto dell’originale. Il nome del nuovo operatore si forma aggiungendo la lettera «N» (che sta per NOT) davanti al nome dell’operatore base.

Applicando questo principio ai tre operatori a due input, otteniamo tre nuovi operatori:

NOT  +  AND  ⟶  NAND
NOT  +  OR   ⟶  NOR
NOT  +  XOR  ⟶  XNOR

La «N» nel nome sta per «NOT»: NAND significa «NOT AND» (AND negato), NOR significa «NOT OR» (OR negato), XNOR significa «NOT XOR» (XOR negato), noto anche come operatore di equivalenza.

Trucco pratico

Per costruire la tabella di verità di un operatore derivato non serve imparare nulla di nuovo. Basta prendere la tabella dell’operatore base e invertire ogni valore della colonna del risultato: dove c’era 0, scrivi 1; dove c’era 1, scrivi 0. Se sai costruire le tabelle di AND, OR e XOR, sai già costruire anche quelle di NAND, NOR e XNOR.

Operatore NAND — il Prodotto logico negato

2 input ⟶ 1 output

L’operatore NAND è il risultato dell’applicazione del NOT all’output dell’AND. Il suo nome sta per NOT AND, cioè «AND negato». Siccome l’AND restituisce VERO solo quando tutti gli input sono veri, il NAND fa l’opposto: restituisce FALSO solo quando tutti gli input sono veri. In tutti gli altri casi, il NAND restituisce VERO.

Definizione

L’operatore NAND (NOT AND, prodotto logico negato) prende due o più valori booleani in input e restituisce VERO (1) quando almeno un input è FALSO (0). L’unico caso in cui il NAND restituisce FALSO (0) è quando tutti gli input sono VERI (1). In pratica: NAND = NOT(AND).

Come si costruisce la Tabella: dall’AND al NAND

ABA AND BNOT (A AND B) = NAND
0001
0101
1001
1110

Tabella di Verità di NAND (versione finale)

ABY = A NAND B
001
011
101
110

Un Trucco per ricordare NAND

Ricordate il «genitore severo» dell’AND, che dava il permesso solo se tutte le condizioni erano soddisfatte? Il NAND è un genitore ribelle: dice di no solo quando tutto è perfetto, e dice di sì in tutti gli altri casi. «Non puoi uscire SOLO SE hai fatto tutti i compiti E hai messo in ordine la stanza. In tutti gli altri casi… vai pure!»

Esempi dalla Vita quotidiana e dalla Tecnologia

SituazioneCondizione ACondizione BRisultato (A NAND B)
Allarme di un sistema di sicurezzaPorta chiusa?Finestra chiusa?L’allarme scatta se almeno una è aperta
Avviso «batteria e dati in esaurimento»Batteria sopra il 20%?Dati mobili sopra il limite?L’avviso compare se almeno una risorsa è in esaurimento
Controllo qualità in fabbricaPezzo con dimensioni corrette?Pezzo con colore corretto?Il pezzo viene scartato se almeno un controllo fallisce

Per chi vuole saperne di più

Il NAND ha un’importanza speciale nell’elettronica digitale. È stato dimostrato che qualsiasi operazione logica può essere costruita usando esclusivamente porte NAND. Per questo motivo, il NAND è definito un operatore funzionalmente completo. Nella pratica, molti circuiti integrati sono costruiti prevalentemente con porte NAND perché sono economiche e versatili. La memoria del tuo smartphone — la tecnologia chiamata NAND Flash — prende il nome proprio da questo operatore.

Operatore NOR — la Somma logica negata

2 input ⟶ 1 output

L’operatore NOR è il risultato dell’applicazione del NOT all’output dell’OR. Il suo nome sta per NOT OR, cioè «OR negato». Siccome l’OR restituisce VERO quando almeno un input è vero, il NOR fa l’opposto: restituisce VERO solo quando tutti gli input sono falsi. Basta che anche uno solo sia vero perché il NOR restituisca FALSO.

Definizione

L’operatore NOR (NOT OR, somma logica negata) prende due o più valori booleani in input e restituisce VERO (1) solo quando tutti gli input sono FALSI (0). Se anche un solo input è VERO (1), il risultato è FALSO (0). In pratica: NOR = NOT(OR).

Come si costruisce la Tabella: dall’OR al NOR

ABA OR BNOT (A OR B) = NOR
0001
0110
1010
1110

Tabella di Verità di NOR (versione finale)

ABY = A NOR B
001
010
100
110

Un Trucco per ricordare NOR

Ricordate il «genitore permissivo» dell’OR, che diceva sì appena almeno una condizione era soddisfatta? Il NOR è un genitore iper-esigente: dice sì solo quando nessuna condizione è soddisfatta. È l’operatore più restrittivo: restituisce VERO in un solo caso su quattro, e proprio in quello dove tutto è «spento».

Esempi dalla Vita quotidiana e dalla Tecnologia

SituazioneCondizione ACondizione BRisultato (A NOR B)
Indicatore «tutto tranquillo» di un sistema di monitoraggioAllarme 1 attivo?Allarme 2 attivo?«Tutto tranquillo» solo se nessun allarme è attivo
Modalità risparmio energeticoSchermo acceso?App in esecuzione in primo piano?Risparmio energetico attivo solo se nessuna delle due è vera
Silenzio in bibliotecaQualcuno sta parlando?Un telefono sta suonando?Il silenzio c’è solo se nessuna delle due è vera

Per chi vuole saperne di più

Come il NAND, anche il NOR è un operatore funzionalmente completo: qualsiasi operazione logica può essere costruita usando solo porte NOR. Storicamente, l’Apollo Guidance Computer (AGC) — il computer di bordo delle missioni Apollo, lo stesso che nel 1969 guidò l’Apollo 11 verso la Luna — era costruito interamente con circa 5.600 porte NOR. La scelta cadde sul NOR perché, all’epoca, le porte NOR a circuito integrato erano tra i componenti più affidabili disponibili per l’industria aerospaziale.

Operatore XNOR — la Somma logica esclusiva negata

2 input ⟶ 1 output

L’operatore XNOR è il risultato dell’applicazione del NOT all’output dello XOR. Il suo nome sta per NOT XOR, cioè «XOR negato». Siccome lo XOR restituisce VERO quando gli input sono diversi, lo XNOR fa l’opposto: restituisce VERO quando gli input sono uguali tra loro.

Definizione

L’operatore XNOR (NOT XOR, somma logica esclusiva negata) prende due o più valori booleani in input e restituisce VERO (1) quando gli input hanno lo stesso valore (entrambi 0 oppure entrambi 1). Il risultato è FALSO (0) quando gli input sono diversi tra loro. In pratica: XNOR = NOT(XOR). Lo XNOR è anche noto come operatore di equivalenza.

Come si costruisce la Tabella: dallo XOR allo XNOR

ABA XOR BNOT (A XOR B) = XNOR
0001
0110
1010
1101

Tabella di Verità di XNOR (versione finale)

ABY = A XNOR B
001
010
100
111

Lo XNOR restituisce 1 quando i due input sono uguali (0 e 0, oppure 1 e 1). Questo è il motivo per cui viene chiamato anche operatore di equivalenza: verifica se due valori sono identici.

Un Trucco per ricordare XNOR

Pensate allo XNOR come a un controllore di uguaglianza. La domanda che si pone è: «Questi due valori sono uguali?» Se la risposta è sì (entrambi veri o entrambi falsi), il risultato è VERO. Se sono diversi, il risultato è FALSO. È lo XOR al contrario: dove lo XOR cercava la differenza, lo XNOR cerca l’uguaglianza.

Esempi dalla Vita quotidiana e dalla Tecnologia

SituazioneCondizione ACondizione BRisultato (A XNOR B)
Verifica di una passwordCarattere digitato dall’utenteCarattere salvato nel sistemaCorrispondenza confermata solo se i due caratteri sono uguali
Sincronizzazione di due orologiOrologio A segna le 10:00?Orologio B segna le 10:00?Sincronizzati solo se mostrano la stessa ora
Verifica di un file copiatoDimensione del file originaleDimensione della copiaCopia riuscita solo se le dimensioni sono identiche
Risposta corretta in un quizRisposta data dallo studenteRisposta corretta registrataPunto assegnato solo se le due risposte coincidono

Confronto tra Operatori base e Operatori derivati

AND e NAND a confronto

ABANDNAND
0001
0101
1001
1110

OR e NOR a confronto

ABORNOR
0001
0110
1010
1110

XOR e XNOR a confronto

ABXORXNOR
0001
0110
1010
1101

Il pattern è sempre lo stesso: riga per riga, dove l’operatore base ha 0 il derivato ha 1, e viceversa. Questo conferma il principio di derivazione: il derivato è semplicemente il NOT dell’originale.

Il Catalogo completo: tutti e sette gli Operatori

Schema riassuntivo dei sette Operatori

OperatoreTipoInputL’output è VERO (1) quando…Parola chiave
NOTFondamentale1…l’input è FALSOOpposto
ANDFondamentale2+…tutti gli input sono VERITutti
ORFondamentale2+…almeno un input è VEROAlmeno uno
XORFondamentale2+…gli input sono diversiDiversi
NANDDerivato (NOT + AND)2+…almeno un input è FALSONon tutti
NORDerivato (NOT + OR)2+…tutti gli input sono FALSINessuno
XNORDerivato (NOT + XOR)2+…gli input sono ugualiUguali

La Tabella di Verità completa di tutti e sette gli Operatori

Operatore NOT (1 input)

ANOT A
01
10

Tutti gli Operatori a 2 input

ABANDORXORNANDNORXNOR
00000111
01011100
10011100
11110001

Osservazione importante

Guardate le colonne a coppie: AND e NAND sono una l’opposto dell’altra (dove uno ha 0, l’altro ha 1). Lo stesso vale per OR e NOR, e per XOR e XNOR. Questo conferma in modo visivo il principio di derivazione: ogni operatore derivato è semplicemente la versione «capovolta» del suo operatore base.

Attenzione

Non è necessario memorizzare a memoria tutte e sette le tabelle. Bastano quattro informazioni: le parole chiave degli operatori fondamentali (opposto, tutti, almeno uno, diversi) e la regola di derivazione (inverti il risultato). Con questi strumenti potete ricostruire qualsiasi tabella in pochi secondi.

Gli Operatori derivati nella Tecnologia

NAND e le Memorie dei nostri Dispositivi

La memoria del vostro smartphone, della chiavetta USB, della scheda SD della fotocamera e dell’SSD del computer è costruita con una tecnologia chiamata NAND Flash. Il nome non è una coincidenza: le celle di memoria che conservano i vostri dati sono organizzate secondo un’architettura che rispecchia la struttura logica dell’operatore NAND. Perché proprio il NAND? Perché, come abbiamo visto, è un operatore funzionalmente completo: da solo è sufficiente a realizzare qualsiasi operazione logica necessaria al funzionamento della memoria. Inoltre, la struttura NAND consente di impacchettare un altissimo numero di celle in uno spazio ridotto, il che si traduce in memorie di grande capacità a costi contenuti.

NOR e i Sistemi di Sicurezza

I sistemi di sicurezza usano spesso la logica NOR. Pensate a un impianto di allarme con diversi sensori (porte, finestre, movimento). Lo stato «tutto sicuro» corrisponde a un NOR: il sistema è in stato di sicurezza solo quando nessun sensore rileva anomalie. Basta che un solo sensore si attivi perché lo stato «tutto sicuro» diventi FALSO e scatti l’allarme. Esiste anche una memoria NOR Flash, più veloce in lettura rispetto alla NAND Flash: viene utilizzata per memorizzare il firmware (il programma di avvio) di molti dispositivi elettronici.

XNOR e il Confronto dei Dati

Lo XNOR è l’operatore ideale per confrontare dati. Quando il telefono verifica che il PIN che avete digitato corrisponde a quello salvato, sta effettuando un confronto bit per bit usando la logica XNOR: per ogni posizione, controlla se il bit digitato è uguale al bit salvato. Se tutti i confronti danno VERO (tutti uguali), il PIN è corretto e il telefono si sblocca. Se anche un solo confronto dà FALSO (un bit diverso), il PIN viene rifiutato. Lo stesso principio si applica quando il computer verifica che un file scaricato da Internet non sia stato danneggiato durante il trasferimento.

Esercizi di Verifica

Esercizio 1 — Costruisci le Tabelle derivate

Su un foglio, scrivi le tabelle di verità di AND, OR e XOR (dalla memoria, senza guardare la dispensa). Poi, per ciascuna, inverti la colonna dell’output per ottenere le tabelle di NAND, NOR e XNOR. Verifica il risultato confrontandolo con la tabella completa presente in questa lezione.

Esercizio 2 — Riconosci l’Operatore derivato

Per ciascuna delle seguenti situazioni, indica quale operatore derivato (NAND, NOR, XNOR) descrive meglio la regola applicata. Spiega brevemente il perché.

  1. Un sistema di controllo segnala «anomalia» se almeno uno dei due sensori non funziona correttamente.
  2. Un software di backup conferma che la copia è riuscita solo se il file originale e la copia sono identici.
  3. Un’applicazione di risparmio energetico attiva la modalità sleep solo quando nessuna attività è in corso (né download, né riproduzione video).
  4. Un sistema anti-spam blocca un’email se almeno uno dei due controlli (mittente sospetto, contenuto sospetto) risulta positivo — ma attenzione: la domanda è «quando l’email passa il filtro», cioè quando il risultato è «tutto ok».
  5. Un quiz online assegna il punto solo se la risposta dello studente coincide con la risposta corretta.
  6. Un distributore automatico accetta una moneta solo se nessun errore è stato rilevato (né inceppamento né serbatoio pieno).

Esercizio 3 — Calcola l’Output

Calcola il risultato (0 o 1) delle seguenti operazioni.

  1. 0 NAND 0 = ?
  2. 1 NAND 1 = ?
  3. 0 NOR 1 = ?
  4. 0 NOR 0 = ?
  5. 1 XNOR 1 = ?
  6. 1 XNOR 0 = ?
  7. 1 NAND 0 = ?
  8. 1 NOR 1 = ?

Esercizio 4 — Da derivato a base

Per ciascuna delle seguenti espressioni con operatori derivati, riscrivila usando solo gli operatori fondamentali (NOT, AND, OR, XOR) e poi calcola il risultato. L’obiettivo è dimostrare che il risultato è lo stesso.

Esempio: 1 NAND 0NOT (1 AND 0) = NOT (0) = 1

  1. 0 NAND 0
  2. 1 NOR 0
  3. 1 XNOR 1
  4. 0 NOR 0
  5. 0 XNOR 1
  6. 1 NAND 1

Esercizio 5 — La Tabella misteriosa

Un compagno ti mostra una tabella di verità senza dirti quale operatore rappresenta. Dalla tabella, scopri di quale operatore si tratta.

Tabella A:

ABY
001
010
100
110

Tabella B:

ABY
001
011
101
110

Tabella C:

ABY
000
011
101
111

Per ciascuna tabella, indica il nome dell’operatore e spiega come sei arrivato alla risposta.

Esercizio 6 — Rispondi con parole tue

Rispondi alle seguenti domande scrivendo almeno tre righe per ciascuna risposta.

  1. Spiega con parole tue il principio di derivazione tramite negazione. Come si passa da un operatore fondamentale al suo derivato?
  2. Qual è la differenza tra NOR e AND? Entrambi restituiscono 1 in un solo caso su quattro: qual è questo caso per ciascuno e perché sono diversi?
  3. Perché lo XNOR viene chiamato anche «operatore di equivalenza»? Fai un esempio pratico.

Esercizio 7 — Gli Operatori derivati nel Codice

NAND, NOR e XNOR non hanno un operatore dedicato in PHP e JavaScript come li abbiamo studiati in forma teorica. Tuttavia, possiamo costruirli combinando gli operatori che già conosciamo, esattamente come abbiamo fatto con le tabelle di verità.

Osserva questo schema e completa gli esercizi che seguono:

<?php
$A = true;
$B = false;

// NAND = NOT(AND)
$nand = !($A && $B);
var_dump($nand);   // Output: bool(true)

// NOR = NOT(OR)
$nor = !($A || $B);
var_dump($nor);    // Output: bool(false)

// XNOR = NOT(XOR)
$xnor = !($A ^ $B);
var_dump($xnor);   // Output: bool(false)
?>
let A = true;
let B = false;

// NAND = NOT(AND)
let nand = !(A && B);
console.log(nand);   // Output: true

// NOR = NOT(OR)
let nor = !(A || B);
console.log(nor);    // Output: false

// XNOR = NOT(XOR) — Boolean() converte il risultato in booleano esplicito
let xnor = !Boolean(A ^ B);
console.log(xnor);   // Output: false

Ora svolgi i seguenti compiti.

  1. Modifica i valori di $A e $B (o di A e B in JavaScript) in modo da ottenere NAND = false. Quali valori hai usato? Perché il NAND restituisce false proprio in quel caso?
  2. Scrivi in PHP e in JavaScript un’espressione che calcoli NOR tra tre variabili: $A, $B e $C. Assegna tu stesso i valori e verifica che il risultato sia coerente con la tabella di verità.
  3. Un sistema di autenticazione assegna un badge di accesso solo se il ruolo dell’utente corrisponde esattamente al ruolo richiesto dalla stanza (entrambi «amministratore» oppure entrambi «ospite», ma non combinazioni miste). Quale operatore derivato descrive questa logica? Scrivi il codice PHP corrispondente usando le variabili $ruolo_utente_admin e $stanza_richiede_admin.
0 0 voti
Valutazione Media
Iscriviti
Notificami
guest
0 Commenti
Vecchi
Più recenti Le più votate
Feedback in linea
Visualizza tutti i commenti
Torna in alto