Udostępnij za pośrednictwem


Operatory logiczne i bitowe w Visual Basic

Operatory logiczne porównują Boolean wyrażeń i return Boolean wynik.And, Or, AndAlso, OrElse, I Xor są operatorzy binarne ponieważ one mają dwa operandy, podczas gdy Not jest operator jednoargumentowe ponieważ zajmuje jeden operand.Niektóre z tych operatorów można również wykonywać operacje bitowe logiczne, wartości integralną.

Jednoargumentowy Operator logiczny

Not — Operator (Visual Basic) Wykonuje logiczną negacji na Boolean wyrażenie.Plonach logiczne przeciwieństwo jego operandu.Jeśli wyrażenie ma True, następnie Not zwraca False; Jeśli wyrażenie ma False, następnie Not zwraca True.Poniższy przykład ilustruje to.

Dim x, y As Boolean
x = Not 23 > 14
y = Not 23 > 67
' The preceding statements set x to False and y to True.

Binarne operatory logiczne

And — Operator (Visual Basic) Wykonuje logiczną połączeniu na dwóch Boolean wyrażenia.Jeśli oba wyrażenia do True, następnie And zwraca True.Jeśli co najmniej jedno z wyrażeń ma wartość False, następnie And zwraca False.

Or — Operator (Visual Basic) Wykonuje logiczną alternatywę lub włączenia na dwóch Boolean wyrażenia.Jeśli wyrażenie zwraca się do True, lub oceny zarówno do True, następnie Or zwraca True.Jeśli ani wyrażenie True, Or zwraca False.

Xor — Operator (Visual Basic) Wykonuje logiczną wykluczenia na dwóch Boolean wyrażenia.Jeżeli dokładnie jedno wyrażenie ma True, ale nie oba Xor zwraca True.Jeśli oba wyrażenia do True lub oceny zarówno do False, Xor zwraca False.

Poniższy przykład ilustruje And, Or, i Xor podmiotów gospodarczych.

Dim a, b, c, d, e, f, g As Boolean

a = 23 > 14 And 11 > 8
b = 14 > 23 And 11 > 8
' The preceding statements set a to True and b to False.

c = 23 > 14 Or 8 > 11
d = 23 > 67 Or 8 > 11
' The preceding statements set c to True and d to False.

e = 23 > 67 Xor 11 > 8
f = 23 > 14 Xor 11 > 8
g = 14 > 23 Xor 8 > 11
' The preceding statements set e to True, f to False, and g to False.

Zwieranie operacje logiczne

AndAlso — Operator (Visual Basic) Jest bardzo podobny do And operatora, w tym również wykonuje logiczną na dwóch Boolean wyrażenia.Najważniejsza różnica między tymi dwoma jest AndAlso wykazuje zwieranie zachowanie.Jeśli pierwsze wyrażenie w AndAlso wyrażenie zostanie oszacowane jako False, a następnie drugie wyrażenie nie jest sprawdzane, ponieważ go nie może zmienić wynik końcowy i AndAlso zwraca False.

Podobnie OrElse — Operator (Visual Basic) wykonuje alternatywę logiczną na dwóch zwieranie Boolean wyrażenia.Jeśli pierwsze wyrażenie w OrElse wyrażenie zostanie oszacowane jako True, a następnie drugie wyrażenie nie jest sprawdzane, ponieważ go nie może zmienić wynik końcowy i OrElse zwraca True.

Zwieranie kompromisów

Zwieranie może zwiększyć wydajność przez nie oceny wyrażenie nie może zmienić wynik operacji logicznej.Jednakże jeśli to wyrażenie wykonuje dodatkowe akcje, zwierającego pomija tych działań.Na przykład, jeśli wyrażenie zawiera wywołanie Function procedury, że procedura nie jest wywoływana, jeśli wyrażenie jest żarówce i każdy dodatkowy kod zawarty w Function nie działa.W związku z tym funkcja może działać tylko sporadycznie i może nie być poprawnie badane.Lub logika programu może być zależna od kodu w Function.

Poniższy przykład ilustruje różnicę między And, Ori ich odpowiednikami w short-circuiting.

Dim amount As Integer = 12
Dim highestAllowed As Integer = 45
Dim grandTotal As Integer
If amount > highestAllowed And checkIfValid(amount) Then 
    ' The preceding statement calls checkIfValid(). 
End If 
If amount > highestAllowed AndAlso checkIfValid(amount) Then 
    ' The preceding statement does not call checkIfValid(). 
End If 
If amount < highestAllowed Or checkIfValid(amount) Then 
    ' The preceding statement calls checkIfValid(). 
End If 
If amount < highestAllowed OrElse checkIfValid(amount) Then 
    ' The preceding statement does not call checkIfValid(). 
End If
Function checkIfValid(ByVal checkValue As Integer) As Boolean 
    If checkValue > 15 Then
        MsgBox(CStr(checkValue) & " is not a valid value.")
        ' The MsgBox warning is not displayed if the call to 
        ' checkIfValid() is part of a short-circuited expression. 
        Return False 
    Else
        grandTotal += checkValue
        ' The grandTotal value is not updated if the call to 
        ' checkIfValid() is part of a short-circuited expression. 
        Return True 
    End If 
End Function

W poprzednim przykładzie, należy zauważyć, że niektóre ważne kodu wewnątrz checkIfValid() nie jest uruchamiane wywołanie jest żarówce.Pierwszy If instrukcji wywołania checkIfValid() nawet 12 > 45 zwraca False, ponieważ And nie zwarcie.Drugi If instrukcja nie wywołuje checkIfValid(), ponieważ po 12 > 45 zwraca False, AndAlso zwarcia drugie wyrażenie.Trzeci If instrukcji wywołania checkIfValid() nawet 12 < 45 zwraca True, ponieważ Or nie zwarcie.Czwarty If instrukcja nie wywołuje checkIfValid(), ponieważ po 12 < 45 zwraca True, OrElse zwarcia drugie wyrażenie.

Operacje bitowe

Operacje bitowe oceny dwie wartości integralną w formie dwójkowy (podstawa 2).One porównać bitów w odpowiednich miejscach i następnie przypisać wartości na podstawie porównania.Poniższy przykład ilustruje And operatora.

Dim x As Integer
x = 3 And 5

Poprzedni przykład ustawia wartość x do 1.Dzieje się tak z następujących powodów:

  • Wartości są traktowane jako binarne:

    3 w formie binarnej = 011

    5 w postaci binarnej = 101

  • And Podmiot gospodarczy porównuje reprezentacje binarnych, binarnych jedną pozycję (bit) w czasie.Jeśli oba bity w danym położeniu są równe 1, a 1 jest umieszczana w tym położeniu, w wyniku.Jeśli bit albo ma wartość 0, 0 jest umieszczana w tym położeniu, w wyniku.W poprzednim przykładzie daje to w następujący sposób:

    011 (3 w formie binarnej)

    101 (5 w postaci binarnej)

    001 (W postaci binarnej wynik)

  • Wynik jest traktowane jako dziesiętne.Wartość 001 jest reprezentacja binarna 1, więc x = 1.

Operatory Or operacji jest podobne, z wyjątkiem, że 1 jest przypisany do bit wynik, jeżeli jedno lub obydwa porównaniu bitów jest 1.Xorprzypisuje 1 bit wynik, jeśli jest dokładnie jeden z bitów w porównaniu, (nie obu) 1.NotTrwa jeden operand i odwraca wszystkie bity, łącznie z bitem znaku i przypisuje wartości do wyniku.Oznacza to, że dla podpisanej liczb dodatnich, Not zawsze zwraca wartość ujemną, a dla liczb ujemnych, Not zawsze zwraca wartość dodatnią lub wartość zero.

AndAlso i OrElse operatorów nie obsługują operacje bitowe.

[!UWAGA]

Operacje bitowe mogą być wykonywane na tylko typy zintegrowane.Wartości zmiennoprzecinkowych muszą być konwertowane na typy integralną, przed rozpoczęciem operacji na poziomie bitowym.

Zobacz też

Informacje

Operatory logiczne/bitowe (Visual Basic)

Koncepcje

Wyrażenia logiczne (Visual Basic)

Operatory arytmetyczne w Visual Basic

Operatory porównania w Visual Basic

Operatory łączenia w Visual Basic

Skuteczna kombinacja operatorów (Visual Basic)