Visual Basic
    • TUTORIAL
    • ESEMPI
    • RIFERIMENTI
    il mio computer

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 Not copia

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.

Operatore And copia

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.

Operatore Or copia

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.

Operatore Xor copia

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.

Analogamente l'operatore OrElse fa la stessa cosa, viene valutato il primo operando e se non c'è necessità il secondo operando non viene valutato, questa volta però nella valutazione del primo operando se questo restituisce True non c'è necessità di valutare anche il secondo perchè L'operatore Or restituisce True quando uno solo dei due operandi restituisce True, quindi l'operazione di valutazione termina sul primo operando e viene restituito True.

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
10 = 1010 (10 in formato binario)
  7 = 0111 (7 in formato binario)
  a = 0010 (a è uguale a 2)

Operatore And bit per bit copia

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.
L'operatore Xor invece  assegna il valore 1 nel risultato solo se uno dei due bit (ma non entrambi) è uguale a 1.
Infine l'operatore Not che accetta un solo operando inverte tutti i valori dei bit compreso il segno del numero, questo significa che tutti i valori positivi diventano valori negativi e tutti i valori negativi diventano positivi.
Gli operatori AndAlso e OrElse non supportano le operazioni bit per bit.