5. Operazioni logiche con i numeri binari

Transcript

5. Operazioni logiche con i numeri binari
I Numeri Binari
5. Operazioni logiche con i numeri binari
La funzione AND
La funzione AND descrive l'effetto prodotto dalla logica ‘e’ (‘and’ in inglese) sulle variabili
coinvolte (per esempio A e B):
Il risultato dell’operazione AND è vera (uscita 1) se A e B sono entrambe vere.
La Tabella di Verità per la funzione AND di A e B è dunque la seguente:
A
B
AND
0
0
0
0
1
0
1
0
0
1
1
1
Possiamo vedere l’operazione logica AND tramite un semplice circuito. Le due variabili sono
rappresentate da due interruttori (interruttore aperto corrisponde alla variabile posta a 0, interruttore
chiuso corrisponde alla variabile posta a 1), mentre il risultato è dato dallo stato della ‘lampadina’
(il cerchio rosso, giallo, nero) che resta accesa (uscita 1) solo se passa la corrente, quindi se
entrambi gli interruttori sono chiusi (posti a 1).
La funzione AND è anche detta prodotto logico. Vediamo infatti analizzando la tabella di
verità che se moltiplichiamo le due variabili A e B, otteniamo proprio il valore in uscita.
Il processore 80x86 prevede l'istruzione omonima, AND, con operandi di tutte le dimensioni (a 8,
16, 32 bit, ...); con operandi a 8 bit vale l'esempio:
Funzione AND
1011 0110 AND
0000 1111 =
------------0000 0110
Il funzionamento della AND sottolinea uno degli usi più raffinati di questa istruzione: quello di
mascherare alcuni bit di un determinato dato; l'esempio mostra chiaramente che i bit del primo
operando (1011 0110) che occupano la stessa posizione dei bit a 0 della maschera (0000 1111)
sono azzerati (mascherati appunto) mentre gli altri mantengono il loro valore.
www.cartebinarie.it
La funzione OR
La funzione OR descrive l'effetto prodotto dalla logica ‘o’ (‘or’ in inglese) sulle variabili coinvolte
(per esempio A e B):
Il risultato dell’operazione OR è vera (uscita 1) se A o B o entrambe sono vere
La Tabella di Verità per la funzione OR di A e B è dunque la seguente:
A
B
OR
0
0
0
0
1
1
1
0
1
1
1
1
Possiamo vedere l’operazione logica OR tramite un semplice circuito. Le due variabili sono
rappresentate da due interruttori (interruttore aperto corrisponde alla variabile posta a 0, interruttore
chiuso corrisponde alla variabile posta a 1), mentre il risultato è dato dallo stato della ‘lampadina’
(il cerchio rosso, giallo, nero) che resta accesa (uscita 1) solo se passa la corrente, quindi almeno
uno degli interruttori è chiuso (posti a 1).
La funzione OR è anche detta somma logica. Vediamo infatti analizzando la tabella di verità
che se sommiamo A e B, otteniamo proprio il valore in uscita.
Sebbene l'ultima combinazione (A=1,B=1) sembri dare 2 come risultato, non va dimenticato che gli
operandi sono logici, non aritmetici, per cui 1+1=1, cioè vero + vero = vero.
Il processore 80x86 prevede l'istruzione omonima, AND, con operandi di tutte le dimensioni (a 8,
16, 32 bit, ...); con operandi a 8 bit vale l'esempio:
Funzione AND
1011 0110 OR
0000 1111 =
------------1011 1111
Il funzionamento della OR sottolinea uno degli usi più raffinati di questa istruzione: quello di
mascherare alcuni bit di un determinato dato; l'esempio mostra chiaramente che i bit del primo
operando (1011 0110) che occupano la stessa posizione dei bit a 1 della maschera (0000 1111)
sono forzati a 1 (mascherati) mentre gli altri mantengono il loro valore.
La funzione NOT
La funzione NOT è diversa da tutte le altre in quanto coinvolge una sola variabile (A) ed ha il
compito di restituirne il valore logico opposto.
La Tabella di Verità per la funzione NOT di A è quindi molto semplice:
www.cartebinarie.it
A
NOT
0
1
1
0
Se A è a 1 (vera) la funzione NOT=f(A) è a 0 (falsa), e viceversa.
Il processore 80x86 prevede l'istruzione omonima, NOT, con operandi di tutte le dimensioni (a 8,
16, 32 bit, ...).
In figura vediamo una possibile costruzione circuitale: se l’interruttore A è aperto (A = 0), la
corrente passa tramite la lampadina accendendola (uscita = 1), altrimenti se l’interruttore è
chiuse (A = 1), la corrente fluisce nella messa a terra lasciando spenta la lampadina (uscita =
0)
La funzione NOT si presta perfettamente per implementare il meccanismo del complemento a
1. Vediamo nell’esempio seguente che l’operando è invertito bit a bit:
Funzione NOT
Complemento a 1
1011 0110 NOT
------------0100 1001
La funzione XOR
L’ultima funzione logica che vediamo è l’OR ESCLUSIVO o XOR.
La sua Tabella di Verità è la seguente:
A
B
XOR
0
0
0
0
1
1
1
0
1
1
1
0
Analizzando la tabella si capisce perché la funzione si chiama OR esclusivo, perché l’uscita è vera
solo se A o B sono vere, ma non entrambe.
Analizziamo ora la tabella della somma aritmetica vista al punto precedente, vediamo come il
risultato coincida con il risultato della funzione logica XOR, mentre il riporto coincide con il
risultato della funzione logica AND:
A
0
0
1
1
B
0
1
0
1
Somma
0
1
1
0
Riporto
0
0
0
1
Fin dall’inizio c’è sempre stato un gap tra ambiente logico e ambiente aritmetico; la funzione XOR
colma questo divario avvicinando i due ambienti, con una logica XOR è possibile simulare
un'operazione aritmetica.
www.cartebinarie.it
Il processore 80x86 prevede l'istruzione omonima, XOR, con operandi di tutte le dimensioni (a 8,
16, 32 bit, ...); con operandi a 8 bit vale l'esempio:
Funzione XOR
1011 0110 XOR
0000 1111 =
------------1011 1001
In parole più semplici, quello che fa la funzione XOR è quella di verificare o meno l’uguaglianza di
due numeri bit a bit: la somma esclusiva di bit uguali tra loro è sempre 0 e, viceversa, la somma
esclusiva di bit diversi tra loro è sempre 1.
Un utilizzo tipico di questa funzione è quello di azzerare un determinato dato: effettuando
l’operazione XOR di un numero con sé stesso, in uscita avremo un numero composto da soli zeri.
Funzione XOR
1011 0110 XOR
1011 0110 =
------------0000 0000
www.cartebinarie.it