Xor-Operator (Visual Basic)

Führt eine logische Exklusion zweier Boolean-Ausdrücke bzw. eine bitweise Exklusion zweier numerischer Ausdrücke aus.

Syntax

result = expression1 Xor expression2  

Bestandteile

result
Erforderlich. Eine Boolean oder numerische Variable. Für den booleschen Vergleich ist result der logische Ausschluss (exklusive logische Disjunktion) von zwei Boolean-Werten. Bei bitweisen Operationen ist result ein numerischer Wert, der den bitweisen Ausschluss (exklusive bitweise Disjunktion) aus zwei numerischen Bitmustern darstellt.

expression1
Erforderlich. Ein beliebiger Boolean-Ausdruck oder numerischer Ausdruck.

expression2
Erforderlich. Ein beliebiger Boolean-Ausdruck oder numerischer Ausdruck.

Bemerkungen

Für den booleschen Vergleich ist dies nur dann der Wert, wenn resultTrue ist, wenn genau einer von expression1 und expression2 zu True ausgewertet wird. Dies ist, wenn und nur, wenn expression1 und expression2 als gegensätzlichee Boolean-Werte ausgewertet werden. Die folgende Tabelle veranschaulicht, wie result bestimmt wird.

Wenn expression1 gleich Und expression2 ist Der Wert von result ist
True True False
True False True
False True True
False False False

Hinweis

Im booleschen Vergleich wertet der Xor-Operator immer beide Ausdrücke aus, die Prozeduraufrufe umfassen können. Es gibt kein Kurzschluss-Gegenstück zu Xor, da das Ergebnis immer von beiden Operanden abhängt. Informationen zur Kurzschaltung logischer Operatoren finden Sie unter AndAlso-Operator und OrElse-Operator.

Bei bitweisen Operationen führt der Xor-Operator einen bitweisen Vergleich gleich positionierter Bits in zwei numerischen Ausdrücken durch und legt das entsprechende Bit gemäß der folgenden Tabelle in result fest.

Wenn Bit in expression1 ist Und Bit in expression2 ist Das Bit in result ist
1 1 0
1 0 1
0 1 1
0 0 0

Hinweis

Da die logischen und bitweisen Operatoren eine niedrigere Rangfolge haben als andere arithmetische und relationale Operatoren, sollten die bitweisen Vorgänge in Klammern eingeschlossen werden, um eine genaue Ausführung sicherzustellen.

Beispielsweise ist 5 Xor 3 6. Um zu sehen, warum dies der Fall ist, konvertieren Sie 5 und 3 in ihre binären Darstellungen, 101 und 011. Verwenden Sie dann die vorherige Tabelle, um zu bestimmen, dass 101 Xor 011 110 ist, bei dem es sich um die binäre Darstellung der Dezimalzahl 6 handelt.

Datentypen

Wenn die Operanden aus einem Boolean-Ausdruck und einem numerischen Ausdruck bestehen, konvertiert Visual Basic den Boolean-Ausdruck in einen numerischen Wert (–1 für True und 0 für False) und führt einen bitweisen Vorgang aus.

Für einen Boolean-Vergleich lautet Boolean der Datentyp des Ergebnisses. Für einen bitweisen Vergleich ist der Ergebnisdatentyp ein numerischer Typ, der für die Datentypen von expression1 und expression2 geeignet ist. Weitere Informationen finden Sie in der Tabelle „Relationale und bitweise Vergleiche“ unter Datentypen von Operatorergebnissen.

Überladen

Der Xor-Operator kann überladen werden. Dies bedeutet, dass eine Klasse oder Struktur ihr Verhalten neu definieren kann, wenn ein Operand den Typ dieser Klasse oder Struktur aufweist. Wenn Ihr Code diesen Operator für eine solche Klasse oder Struktur verwendet, stellen Sie sicher, dass Sie das neu definierte Verhalten verstehen. Weitere Informationen finden Sie unter Operator Procedures.

Beispiel 1

Im folgenden Beispiel wird der Xor-Operator verwendet, um logische Ausschlüsse (exklusive logische Disjunktion) für zwei Ausdrücke auszuführen. Das Ergebnis ist ein Boolean-Wert, der angibt, ob genau einer der Ausdrücke True ist.

Dim a As Integer = 10
Dim b As Integer = 8
Dim c As Integer = 6
Dim firstCheck, secondCheck, thirdCheck As Boolean
firstCheck = a > b Xor b > c
secondCheck = b > a Xor b > c
thirdCheck = b > a Xor c > b

Im vorherigen Beispiel werden Ergebnisse von je False, Trueund False erzeugt.

Beispiel 2

Im folgenden Beispiel wird der Xor-Operator verwendet, um logische Ausschlüsse (exklusive logische Disjunktion) für die einzelnen Bits von zwei numerischen Ausdrücken auszuführen. Das Bit im Ergebnismuster wird festgelegt, wenn genau eines der entsprechenden Bits in den Operanden auf 1 festgelegt ist.

Dim a As Integer = 10 ' 1010 in binary
Dim b As Integer = 8  ' 1000 in binary
Dim c As Integer = 6  ' 0110 in binary
Dim firstPattern, secondPattern, thirdPattern As Integer
firstPattern = (a Xor b)  '  2, 0010 in binary
secondPattern = (a Xor c) ' 12, 1100 in binary
thirdPattern = (b Xor c)  ' 14, 1110 in binary

Im vorherigen Beispiel werden Ergebnisse von je 2, 12 und 14 erzeugt.

Siehe auch