Operatori logici e bit per bit Gli operatori logici sono in tutto sei, il primo operatore si chiama Not e si dice che è unario perchè accetta un solo operando, poi ci sono gli operatori And, Or e Xor che sono operatori binari, perchè accettano due operandi ed infine ci sono gli operatori AndAlso e OrElse che sono detti operatori di corto circuito, così detti perchè come i precedenti operatori binari eseguono un confronto su due operandi con la differenza che quando viene valutato il primo operando, se già da questo si evince il risultato il confronto termina. Operatore Not Questo operatore determina una negazione logica su di una espressione Boolean. Produce l'opposto logico del relativo operando. Se l'espressione restituisce True, Not restituisce False; Se invece restituisce False, Not restituisce True. Quì sotto vediamo un esempio.
Operatore And L' operatore And esegue una congiunzione logica su due espressioni Boolean. Se entrambe le espressioni restituiscono True, And restituisce True. Se almeno una delle espressioni restituisce False, And restituisce False. Questo significa che And restituisce True solamente quando le due espressioni Boolean restituiscono True, in tutti gli altri casi restituisce sempre False. Sotto l'esempio.
L'istruziona And in italiano si può tradurre come e, allora la riga a = 30 > 10 And 10 < 30 potrebbe essere letta come se 30 maggiore 10 e 10 minore 30 allora a = True perchè entrambe le espressioni sono vere. Operatore Or L' operatore Or esegue una disgiunzione logica su due espressioni Boolean. A differenza dell'operatore And che restituisce True solo quando le due espressioni sono entrambe True l' operatore Or restituisce True quando una solo o entrambe le espressioni restituiscono True. Se nessuna delle due espressioni restituisce True, Or restituisce False.
L' operatore Or potrebbe essere letto come o, infatti la riga di istruzione che lo contiene potrebbe essere letta come se 30 maggiore di 10 o 10 maggiore di 30 allora a= True. La prima istruzione 30 maggiore di 10 restituisce True mentre la seconda 10 maggiore di 30 restituisce False quindi a = True. Operatore Xor L' operatore Xor esegue una esclusione logica su due espressioni Boolean. Xor restituisce True solo se esattamente un'espressione restituisce True, ma non entrambi. Se entrambe le espressioni restituiscono True o entrambe restituiscono False, Xor restituisce False.
In questo esempio a contiene True perchè solo la prima espressione restituisce True, mentre b contiene False perchè entrambe le espressioni restituiscono True. Se entrambe le espressioni avessero restituito False il risultato di b sarebbe ugualmente stato False. Operatori AndAlso e OrElse L' operatore AndAlso
è praticamente uguale all'operatore And, la sua unica
differenza sta nel modo in cui l'espressione viene valutata, in una
normale espressione con l'operatore And solamente se i
due operandi sono True viene restituito True,
quindi vengono valutati entrambi gli operandi, invece con l'operatore
AndAlso viene valutato il primo operando e solo se
questo da come risultato True viene poi valutato anche
il secondo, altrimenti se il primo operando restituisce False
non c'è necessità di valutare anche il secondo, la valutazione quindi
termina con la restituzione di False. Operatori bit per bit L'operatore And oltre che per un confronto con valori Boolean vengono usati anche per un confronto con valori numerici, in questo caso si dice che si tratta di un confronto bit per bit. I due operandi sono espressi come valori decimali ma nell'operazione bit per bit i numeri vengono espressi come valori binari cioè in base 2, e vengono valutati una posizione alla volta. Se entrambi i bit in una determinata posizione sono pari a 1, il valore 1 viene posizionato in tale posizione nel risultato. Se uno o entrambi i bit è 0, un valore 0 viene posizionato in tale posizione nel risultato. Nell'esempio questo approccio funziona come segue. a = 10 And 7
L'opertore Or
bit per bit funziona in modo analogo, ad eccezione del fatto che basta
che uno dei due bit o entrambi sia uguale a 1 che al bit nel risultato
venga assegnato 1, se entrambi sono uguali a 0 al bit nel risultato
viene assegnato 0.
|
|||||||||||||||||||||