Xor-operator (Visual Basic)
Utför ett logiskt exkludering på två Boolean
uttryck eller ett bitvis exkludering på två numeriska uttryck.
Syntax
result = expression1 Xor expression2
Delar
result
Obligatoriska. Valfri Boolean
eller numerisk variabel. För boolesk jämförelse result
är det logiska undantaget (exklusiv logisk disjunction) av två Boolean
värden. För bitvis åtgärder result
är ett numeriskt värde som representerar bitvis exkludering (exklusiv bitvis disjunction) av två numeriska bitmönster.
expression1
Obligatoriska. Valfritt Boolean
eller numeriskt uttryck.
expression2
Obligatoriska. Valfritt Boolean
eller numeriskt uttryck.
Kommentarer
För boolesk jämförelse result
är True
om och bara om exakt en av expression1
och expression2
utvärderas till True
. Det vill: om och bara om expression1
och expression2
utvärderas till motsatta Boolean
värden. I följande tabell visas hur result
bestäms.
Om expression1 är |
Och expression2 är |
Värdet för result är |
---|---|---|
True |
True |
False |
True |
False |
True |
False |
True |
True |
False |
False |
False |
Kommentar
I en boolesk jämförelse utvärderar operatorn Xor
alltid båda uttrycken, vilket kan innefatta att göra proceduranrop. Det finns ingen kortslutningsmotsvarighet till Xor
, eftersom resultatet alltid beror på båda operanderna. Information om logiska kortslutningsoperatorer finns i AndAlso-operatorn och OrElse-operatorn.
För bitvis åtgärder utför operatorn Xor
en bitvis jämförelse av identiskt placerade bitar i två numeriska uttryck och anger motsvarande bit i result
enligt följande tabell.
Om bit in expression1 är |
Och bit in expression2 är |
Biten i result är |
---|---|---|
1 | 1 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
0 | 0 | 0 |
Kommentar
Eftersom de logiska operatorerna och bitvis-operatorerna har lägre prioritet än andra aritmetiska operatorer och relationsoperatorer bör alla bitvis åtgärder omges av parenteser för att säkerställa korrekt körning.
Till exempel är 5 Xor
3 6. För att se varför detta är så konverterar du 5 och 3 till deras binära representationer, 101 och 011. Använd sedan föregående tabell för att fastställa att 101 Xor 011 är 110, vilket är den binära representationen av decimalnumret 6.
Datatyper
Om operanderna består av ett Boolean
uttryck och ett numeriskt uttryck konverterar Boolean
Visual Basic uttrycket till ett numeriskt värde (–1 för True
och 0 för False
) och utför en bitvis åtgärd.
För en Boolean
jämförelse är Boolean
datatypen för resultatet . För en bitvis jämförelse är resultatdatatypen en numerisk typ som är lämplig för datatyperna expression1
och expression2
. Se tabellen "Relations- och bitvisjämförelser" i Datatyper av operatorresultat.
Överbelastning
Operatorn Xor
kan överbelastas, vilket innebär att en klass eller struktur kan omdefiniera sitt beteende när en operande har den typen av klass eller struktur. Om din kod använder den här operatorn i en sådan klass eller struktur ska du se till att du förstår dess omdefinierade beteende. Mer information finns i Operatorprocedurer.
Exempel 1
I följande exempel används operatorn Xor
för att utföra logisk exkludering (exklusiv logisk disjunction) på två uttryck. Resultatet är ett Boolean
värde som representerar om exakt ett av uttrycken är True
.
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
I föregående exempel visas resultatet av False
, True
respektive False
.
Exempel 2
I följande exempel används operatorn Xor
för att utföra logisk exkludering (exklusiv logisk disjunction) på enskilda bitar av två numeriska uttryck. Biten i resultatmönstret anges om exakt en av motsvarande bitar i operanderna är inställd på 1.
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
Föregående exempel ger resultat på 2, 12 respektive 14.