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 Boolean
het gegevenstype van het resultaat . Voor een bitsgewijze vergelijking is het resultaatgegevenstype een numeriek type dat geschikt is voor de gegevenstypen en expression1
expression2
. 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 False
respectievelijk , True
en 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.