Xor (Operador, Visual Basic)
Realiza una exclusión lógica en dos expresiones Boolean
o una exclusión bit a bit en dos expresiones numéricas.
Sintaxis
result = expression1 Xor expression2
Partes
result
Necesario. Cualquier variable numérica o Boolean
. En el caso de una comparación booleana, result
es la exclusión lógica (disyunción lógica exclusiva) de dos valores Boolean
. En el caso de las operaciones bit a bit, result
es un valor numérico que representa la exclusión bit a bit (disyunción bit a bit exclusiva) de dos patrones de bits numéricos.
expression1
Obligatorio. Cualquier expresión numérica o de tipo Boolean
.
expression2
Obligatorio. Cualquier expresión numérica o de tipo Boolean
.
Comentarios
En el caso de la comparación booleana, result
es True
si y solo si exactamente uno de expression1
y expression2
se evalúa como True
. Es decir, si y solo si expression1
y expression2
se evalúan como valores Boolean
opuestos. En la tabla siguiente, se muestra cómo se determina result
.
Si expression1 es |
Y expression2 es |
El valor de result es |
---|---|---|
True |
True |
False |
True |
False |
True |
False |
True |
True |
False |
False |
False |
Nota
En una comparación booleana, el operador Xor
siempre evalúa ambas expresiones, lo que podría incluir la realización de llamadas a procedimientos. No existe ningún equivalente de cortocircuito de Xor
, ya que el resultado siempre depende de ambos operandos. Para los operadores lógicos de cortocircuito, consulte Operador AndAlso y Operador OrElse.
Para las operaciones bit a bit, el operador Xor
realiza una comparación bit a bit de los bits colocados de manera idéntica en dos expresiones numéricas y establece el bit correspondiente en result
según la tabla siguiente.
Si el bit en expression1 es |
Y el bit en expression2 es |
El bit en result es |
---|---|---|
1 | 1 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
0 | 0 | 0 |
Nota:
Dado que los operadores lógicos y bit a bit tienen una prioridad menor que otros operadores aritméticos y relacionales, las operaciones bit a bit se deben incluir entre paréntesis para garantizar una ejecución precisa.
Por ejemplo, 5 Xor
3 es 6. Para ver por qué esto es así, convierta 5 y 3 en sus representaciones binarias, 101 y 011. Luego, use la tabla anterior para determinar que 101 Xor 011 es 110, que es la representación binaria del número decimal 6.
Tipo de datos
Si los operandos constan de una expresión Boolean
y una expresión numérica, Visual Basic convierte la expresión Boolean
en un valor numérico (–1 para True
y 0 para False
) y realiza una operación bit a bit.
Para una comparación Boolean
, el tipo de datos del resultado es Boolean
. Para una comparación bit a bit, el tipo de datos del resultado es un tipo numérico adecuado para los tipos de datos de expression1
y expression2
. Consulte la tabla "Comparaciones relacionales y bit a bit" en Tipos de datos de resultados de operador.
Sobrecarga
El operador Xor
puede sobrecargarse, lo que significa que una clase o estructura puede redefinir su comportamiento cuando un operando tiene el tipo de esa clase o estructura. Si el código usa este operador en una clase o estructura de este tipo, asegúrese de que comprende su comportamiento redefinido. Para obtener más información, consulta Operator Procedures.
Ejemplo 1
En el ejemplo siguiente, se usa el operador Xor
para realizar una exclusión lógica (disyunción lógica exclusiva) en dos expresiones. El resultado es un valor Boolean
que representa si exactamente una de las expresiones es 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
En el ejemplo anterior, se generan los resultados de False
, True
y False
, respectivamente.
Ejemplo 2
En el ejemplo siguiente, se usa el operadorXor
para realizar exclusiones lógicas (disyunciones lógicas exclusivas) en los bits individuales de dos expresiones numéricas. El bit del patrón de resultado se establece si exactamente uno de los bits correspondientes de los operandos se establece en 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
En el ejemplo anterior, se generan los resultados de 2, 12 y 14, respectivamente.