Aracılığıyla paylaş


Visual Basic'te mantıksal ve Bitsel işleçler

Mantıksal işleçler karşılaştırmak Boolean ifadeler ve dönüş bir Boolean sonucu.And, Or, AndAlso, OrElse, Ve Xor iþleçleri ikili iki işlenen tuttuğundan, while Not operator tekli tek bir işlenen aldığından.Bu işleçlerin bazıları da tam sayı değerleri üzerinde bitsel mantıksal işlemleri gerçekleştirebilirsiniz.

Tekli mantıksal işleci

Not işleci (Visual Basic) Mantıksal gerçekleştiren Negatiflik üzerinde bir Boolean ifadesi.Bu, işlenen mantıksal tersini verir.İfade olarak değerlendirilir, True, sonra Not döndüren False; ifade olarak değerlendirilir, False, sonra Not döndüren True.Aşağıdaki örnek bunu göstermektedir.

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

İkili mantıksal işleçler

Ve işlecini (Visual Basic) Mantıksal gerçekleştiren birlikte ikisi üzerinde Boolean ifadeler.Her ikisi de değerlendirebilir, True, sonra And döndüren True.İfadeler en az birini verirse False, sonra And döndüren False.

Veya işleci (Visual Basic) Mantıksal gerçekleştiren disjunction veya eklenmesi ikisi üzerinde Boolean ifadeler.Ya da ifade olarak değerlendirilir, True, ya da her ikisi için değerlendirmek True, sonra Or verir True.Ne ifade olarak değerlendirilir, True, Or döndüren False.

Xor işleci (Visual Basic) Mantıksal gerçekleştiren dışlama ikisi üzerinde Boolean ifadeler.Tam olarak bir ifade olarak değerlendirilir, True, ancak her ikisini birden değil, Xor fonksiyonu True.Her ikisi de değerlendirebilir, True ya da her ikisi için değerlendirmek False, Xor döndüren False.

Aşağıdaki örnekte gösterilmektedir And, Or, ve Xor operators.

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.

Short-Circuiting mantıksal işlemler

AndAlso işleci (Visual Basic) Çok benzer And işleci, ayrıca mantıksal birlikte iki adet gerçekleştirdiği, Boolean ifadeler.İkisi arasındaki en önemli fark olan AndAlso sergiler short-circuiting davranış.İlk ifadesinde bir AndAlso deyimi değerlendirir için False, sonra nihai sonuca değiştiremezsiniz çünkü İkinci ifade değerlendirilmez ve AndAlso fonksiyonu False.

Benzer şekilde, OrElse işleci (Visual Basic) short-circuiting üzerinde iki mantıksal disjunction gerçekleştirir Boolean ifadeler.İlk ifadesinde bir OrElse deyimi değerlendirir için True, sonra nihai sonuca değiştiremezsiniz çünkü İkinci ifade değerlendirilmez ve OrElse fonksiyonu True.

wz3k228a.collapse_all(tr-tr,VS.110).gifRAID'in short-Circuiting

Short-circuiting mantıksal işlemi sonucu değiştiremezler ifade değerlendirerek değil performansını artırabilirsiniz.Ancak, bu ifade ek eylemleri gerçekleştirir, short-circuiting bu eylemleri atlar.İfade bir çağrı içerir, örneğin, bir Function yordamı, yordamın ifade kısa devre yapılma ise ve herhangi bir ek kod içerdiği olarak değil Function çalışmaz.Bu nedenle, işlevi, yalnızca zaman zaman çalıştırmak ve doğru test değil.Program mantığı koda bağlı olabilir veya Function.

Aşağıdaki örnekte, arasındaki fark gösterilmektedir And, Orve short-circuiting karşılıkları.

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

Yukarıdaki örnekte, Not içinde bazı önemli kod checkIfValid() çağrı kısa devre yapılma olduğunda çalışmaz.İlk If deyimi çağrıları checkIfValid() bile 12 > 45 verir False, çünkü And short-circuit değil.İkinci If deyimi çağırmıyor checkIfValid(), çünkü, 12 > 45 döndüren False, AndAlso İkinci ifade short-circuits.Üçüncü If deyimi çağrıları checkIfValid() bile 12 < 45 verir True, çünkü Or short-circuit değil.Dördüncü If deyimi çağırmıyor checkIfValid(), çünkü, 12 < 45 döndüren True, OrElse İkinci ifade short-circuits.

Bitsel işlemler

İki ayrılmaz ikili (2 tabanı) formdaki değerler bitwise ilemlerini değerlendirin.Bunlar bit değerlerine karşılık gelen pozisyonlar karşılaştırmak ve Karşılaştırmasında dayanan bir değerler atayın.Aşağıdaki örnekte gösterilmektedir And işleci.

Dim x As Integer
x = 3 And 5

Yukarıdaki örnek ayarlar x 1.Bu, aşağıdaki nedenlerle gerçekleşir:

  • Değerleri bir ikili dosya olarak değerlendirilir:

    ikili biçimdeki 3 011 =

    ikili biçimde 5 = 101

  • And İşleci bir ikili pozisyon (bit) aynı anda ikili temsili karşılaştırır.Belirli bir konumdaki bitlerin her ikisi de 1 ise, 1 sonuç o konuma yerleştirilir.Her iki bit 0 ise 0 sonuç o konuma yerleştirilir.Yukarıdaki örnekte bu gibi çalışır:

    (3 ikili biçimdeki) 011

    101 (ikili biçimde 5)

    001 (İkili biçimde sonuç)

  • Sonuç, ondalık olarak kabul edilir.001 1, İkili gösterimini bu nedenle değerdir x = 1.

Bitsel Or işlemdir benzer, ya da ya da karşılaştırılan bitlerin her ikisi de 1 ise sonuç bit 1 atanmış olmasıdır.Xorkarşılaştırılan bitlerin (her ikisi değil de) tam olarak biri 1 ise sonuç bit 1 atar.Nottek bir işlenen alır ve işaret biti dahil olmak üzere tüm bitlerin ters çevirir ve sonuç değerini atar.Pozitif sayılar için imzalı yani Not her zaman negatif bir değer verir ve negatif sayılar için Not her zaman bir pozitif değerler ya da sıfır değerini döndürür.

AndAlso Ve OrElse bitwise ilemlerini işleçleri desteklemez.

[!NOT]

Yalnızca tam sayı türleri üzerinde Bitsel işlemler gerçekleştirilebilir.Bitsel işleme devam etmeden önce kayan nokta deðerlerinin ayrılmaz türleri dönüştürülmesi gerekir.

Ayrıca bkz.

Başvuru

/ Bitsel Mantıksal operatörler (Visual Basic)

Kavramlar

Boolean deyimleri (Visual Basic)

Visual Basic'te aritmetik işleçler

Visual Basic'te karşılaştırma işleçleri

Visual Basic'te bitiştirme işleç

Verimli birleşimi Operators (Visual Basic)