Xor, opérateur (Visual Basic)
Effectue une exclusion logique sur deux expressions Boolean
ou une exclusion de bits sur deux expressions numériques.
Syntaxe
result = expression1 Xor expression2
Éléments
result
Obligatoire. Toute variable Boolean
ou numérique. Pour la comparaison booléenne, result
est l’exclusion logique (disjonction logique exclusive) de deux valeurs Boolean
. Pour les opérations au niveau du bit, result
est une valeur numérique qui représente l’exclusion au niveau du bit (disjonction au niveau du bit exclusive) de deux modèles de bits numériques.
expression1
Obligatoire. Toute expression Boolean
ou numérique.
expression2
Obligatoire. Toute expression Boolean
ou numérique.
Notes
Pour la comparaison booléenne, result
est True
si et seulement si exactement l’un de expression1
et expression2
est évalué à True
. Autrement dit, si et seulement si expression1
et expression2
évaluent à des valeurs opposées Boolean
. Le tableau suivant illustre la détermination de result
.
Si expression1 est |
Et expression2 est |
La valeur de result est |
---|---|---|
True |
True |
False |
True |
False |
True |
False |
True |
True |
False |
False |
False |
Notes
Dans une comparaison booléenne, l’opérateur Xor
évalue toujours les deux expressions, ce qui peut inclure la réalisation d’appels de procédure. Il n’existe aucun court-circuitage équivalent à Xor
, car le résultat dépend toujours des deux opérandes. Pour les opérateurs logiques de court-circuit, consultez Opérateur AndAlso et Opérateur OrElse.
Pour les opérations au niveau du bit, l’opérateur Xor
effectue une comparaison au niveau du bit de bits identiques dans deux expressions numériques et définit le bit correspondant dans result
en fonction du tableau suivant.
Si le bit en expression1 est |
Et le bit en expression2 est |
Le bit en result est |
---|---|---|
1 | 1 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
0 | 0 | 0 |
Notes
Étant donné que les opérateurs logiques et au niveau du bit ont une priorité inférieure à d’autres opérateurs arithmétiques et relationnels, toutes les opérations au niveau du bit doivent être placées entre parenthèses pour garantir l’exécution précise.
Par exemple, 5 Xor
3 est 6. Pour voir pourquoi il en est ainsi, convertissez 5 et 3 en leurs représentations binaires, 101 et 011. Utilisez ensuite le tableau précédent pour déterminer que 101 Xor 011 est 110, qui est la représentation binaire du nombre décimal 6.
Types de données
Si les opérandes se composent d’une expression Boolean
et d’une expression numérique, Visual Basic convertit l’expression Boolean
en valeur numérique (–1 pour True
et 0 pour False
) et effectue une opération au niveau du bit.
Pour une comparaison Boolean
, le type de données du résultat est Boolean
. Pour une comparaison au niveau du bit, le type de données de résultat est un type numérique approprié pour les types de données de expression1
et de expression2
. Consultez le tableau « Comparaisons relationnelles et au niveau du bit » dans Types de données des Résultats d’opérateur.
Surcharge
L’opérateur Xor
peut être surchargé, ce qui signifie qu’une classe ou une structure peut redéfinir son comportement lorsqu’un opérande a le type de cette classe ou structure. Si votre code utilise cet opérateur sur une telle classe ou structure, veillez à comprendre son comportement redéfini. Pour plus d'informations, consultez Operator Procedures.
Exemple 1
L’exemple suivant utilise l’opérateur Xor
pour effectuer une exclusion logique (disjonction logique exclusive) sur deux expressions. Le résultat est une valeur Boolean
qui indique si l’une des expressions est exactement 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
L’exemple précédent produit les résultats de False
, True
et False
, respectivement.
Exemple 2
L’exemple suivant utilise l’opérateur Xor
pour effectuer une exclusion logique (disjonction logique exclusive) sur les bits individuels de deux expressions numériques. Le bit dans le modèle de résultat est défini si l’un des bits correspondants dans les opérandes est défini sur 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
L’exemple précédent produit des résultats de 2, 12 et 14, respectivement.