Xor-Operator (Visual Basic)
Aktualisiert: November 2007
Führt einen logischen Ausschluss zweier Boolean-Ausdrücke oder einen bitweisen Ausschluss zweier numerischer Ausdrücke durch.
result = expression1 Xor expression2
Bestandteile
result
Erforderlich. Beliebiger Boolean-Ausdruck oder numerische Variable. Bei booleschen Vergleichen ist result der logische Ausschluss (exklusive logische Disjunktion) aus 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. Beliebiger Boolean-Ausdruck oder numerischer Ausdruck.expression2
Erforderlich. Beliebiger Boolean-Ausdruck oder numerischer Ausdruck.
Hinweise
Bei booleschen Vergleichen ist result dann und nur dann True, wenn genau einer der beiden Ausdrücke expression1 oder expression2 den Wert Trueergibt. Das heißt, nur wenn expression1 und expression2 entgegengesetzte Boolean Werte ergeben. Die folgende Tabelle veranschaulicht, wie result bestimmt wird.
Ist expression1 gleich |
und ist expression2 gleich |
ist der Wert von result gleich |
---|---|---|
True |
True |
False |
True |
False |
True |
False |
True |
True |
False |
False |
False |
Hinweis: |
---|
In einem booleschen Vergleich wertet der Xor-Operator immer beide Ausdrücke aus, wobei u. U. Prozeduraufrufe ausgeführt werden können. Es gibt keine Kurzschlussentsprechung für Xor, da das Ergebnis immer von beiden Operanden abhängt. Informationen über logische Kurzschlussoperatoren finden Sie unter AndAlso-Operator und OrElse-Operator. |
Bei bitweisen Operationen vergleicht der Xor-Operator bitweise Bits, die in zwei numerischen Ausdrücken identisch positioniert sind, und legt das entsprechende Bit gemäß der folgenden Tabelle auf result fest.
Ist das Bit in expression1 |
und das Bit in expression2 |
dann ist das Bit in result |
---|---|---|
1 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
Hinweis: |
---|
Da die logischen und bitweisen Operatoren einen niedrigeren Rang als andere arithmetische und relationale Operatoren haben, müssen alle bitweisen Operationen in Klammern gesetzt werden, um eine akkurate Ausführung zu gewährleisten. |
Beispielsweise steht 5 Xor 3 für 6. Um zu diesem Ergebnis zu kommen, müssen Sie 5 und 3 in ihre binären Darstellungen, d. h. 101 und 011, konvertieren. Anschließend müssen Sie anhand der vorherigen Tabelle festlegen, dass 101 Xor 011 für 110 steht. Dies ist die binäre Darstellung der Dezimalzahl 6 ist.
Datentypen
Wenn die Operanden aus einem Boolean-Ausdruck und einem numerischen Ausdruck bestehen, wandelt Visual Basic den Boolean-Ausdruck in einen numerischen Wert um (–1 für True und 0 für False) und führt die Operation bitweise aus.
Bei einem Vergleich von Boolean-Ausdrücken ist der Datentyp des Ergebnisses Boolean. Bei einem bitweisen Vergleich ist der Datentyp des Ergebnisses ein numerischer Typ, der für die Datentypen von expression1 und expression2 geeignet ist. Siehe die Tabelle "Relationale und bitweise Vergleiche" in Datentypen von Operatorergebnissen.
Überladen
Der Xor-Operator kann überladen werden. Das bedeutet, dass eine Klasse oder Struktur sein Verhalten neu definiert, wenn ein Operand den Typ dieser Klasse oder Struktur aufweist. Wenn Sie diesen Operator im Code auf eine solche Klasse oder Struktur anwenden, sollten Sie auf jeden Fall dessen neu definiertes Verhalten kennen. Weitere Informationen hierzu finden Sie unter Operatorprozeduren.
Beispiel
In diesem Beispiel wird mit dem Xor-Operator ein logischer Ausschluss (exklusive logische Disjunktion) mit zwei Ausdrücken ausgeführt. Das Ergebnis ist ein Boolean-Wert, der darstellt, ob genau einer der beiden 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
Durch das vorherige Beispiel werden die Ergebnisse False, True bzw. False erzeugt.
Im folgenden Beispiel wird mit dem Xor-Operator ein logischer Ausschluss (exklusive logische Disjunktion) für zwei einzelne Bits von zwei numerischen Ausdrücken ausgeführt. Das Bit im Ergebnismuster wird gesetzt, wenn genau eines der entsprechenden Bits in den Operanden auf 1 gesetzt wird.
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
Durch das vorherige Beispiel werden die Ergebnisse 2, 12 bzw. 14 erzeugt.
Siehe auch
Konzepte
Logische und bitweise Operatoren in Visual Basic