Delen via


Xor-operator (Visual Basic)

Voert een logische uitsluiting uit op twee Boolean expressies of een bitsgewijze uitsluiting op twee numerieke expressies.

Syntaxis

result = expression1 Xor expression2  

generator

result
Vereist. Een Boolean of meer numerieke variabelen. Voor booleaanse vergelijking result is de logische uitsluiting (exclusieve logische ontkoppeling) van twee Boolean waarden. Voor bitsgewijze bewerkingen result is dit een numerieke waarde die de bitwise uitsluiting (exclusief bitwise disjunction) van twee numerieke bitpatronen vertegenwoordigt.

expression1
Vereist. Een Boolean of meer numerieke expressies.

expression2
Vereist. Een Boolean of meer numerieke expressies.

Opmerkingen

Voor booleaanse vergelijking result is True als en alleen als precies één van expression1 en expression2 evalueert naar True. Dat wil gezegd, als en alleen als en alleen als expression1 en expression2 evalueert naar tegenovergestelde Boolean waarden. In de volgende tabel ziet u hoe result dit wordt bepaald.

Als expression1 is En expression2 is De waarde van result is
True True False
True False True
False True True
False False False

Notitie

In een Booleaanse vergelijking evalueert de Xor operator altijd beide expressies, waaronder het maken van procedureaanroepen. Er is geen tegenhanger voor kortsluiting Xor, omdat het resultaat altijd afhankelijk is van beide operanden. Zie AndAlso Operator en OrElse Operator voor kortsluiting.

Voor bitsgewijze bewerkingen voert de Xor operator een bitsgewijze vergelijking van identiek geplaatste bits in twee numerieke expressies uit en stelt de bijbehorende bit in result volgens de volgende tabel.

Als bit is ingeschakeld expression1 En bit in expression2 is De bit in result is
1 1 0
1 0 1
0 1 1
0 0 0

Notitie

Aangezien de logische en bitsgewijze operators een lagere prioriteit hebben dan andere rekenkundige en relationele operatoren, moeten bitsgewijze bewerkingen tussen haakjes worden geplaatst om een nauwkeurige uitvoering te garanderen.

5 Xor 3 is bijvoorbeeld 6. Als u wilt zien waarom dit zo is, converteert u 5 en 3 naar hun binaire weergaven, 101 en 011. Gebruik vervolgens de vorige tabel om te bepalen dat 101 Xor 011 110 is. Dit is de binaire weergave van het decimale getal 6.

Gegevenstypen

Als de operanden bestaan uit één Boolean expressie en één numerieke expressie, converteert Visual Basic de Boolean expressie naar een numerieke waarde (–1 voor True en 0 voor False) en voert een bitsgewijze bewerking uit.

Voor een Boolean vergelijking is Booleanhet gegevenstype van het resultaat . Voor een bitsgewijze vergelijking is het resultaatgegevenstype een numeriek type dat geschikt is voor de gegevenstypen en expression1expression2. Zie de tabel Relationele en Bitwise-vergelijkingen in Gegevenstypen operatorresultaten.

Overbelasting

De Xor operator kan overbelast worden, wat betekent dat een klasse of structuur het gedrag ervan opnieuw kan definiëren wanneer een operand het type van die klasse of structuur heeft. Als uw code deze operator gebruikt voor een dergelijke klasse of structuur, moet u het opnieuw gedefinieerde gedrag ervan begrijpen. Zie Operator Procedures voor meer informatie.

Voorbeeld 1

In het volgende voorbeeld wordt de Xor operator gebruikt om logische uitsluiting (exclusieve logische uitsluiting) uit te voeren op twee expressies. Het resultaat is een Boolean waarde die aangeeft of precies een van de expressies is 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

In het vorige voorbeeld worden de resultaten van Falserespectievelijk , Trueen False, geproduceerd.

Voorbeeld 2

In het volgende voorbeeld wordt de Xor operator gebruikt om logische uitsluiting (exclusieve logische disjunction) uit te voeren op de afzonderlijke bits van twee numerieke expressies. De bit in het resultaatpatroon wordt ingesteld als precies een van de bijbehorende bits in de operanden is ingesteld op 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

Het vorige voorbeeld produceert respectievelijk resultaten van 2, 12 en 14.

Zie ook