Xor (Operador, Visual Basic)
Realiza una exclusión lógica entre dos expresiones de tipo Boolean o bien una exclusión bit a bit entre dos expresiones numéricas.
result = expression1 Xor expression2
Elementos
result
Obligatorio. Cualquier variable numérica o de tipo Boolean. Para la comparación booleana, result es la exclusión lógica (disyunción lógica exclusiva) de dos valores Boolean. Para 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 modelos 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 la comparación booleana, result es True si y sólo si uno de los argumentos expression1 y expression2 se evalúa exactamente en True. Es decir, si y sólo si expression1 y expression2 se evalúan en valores Boolean opuestos. En la tabla siguiente se ilustra cómo se determina el argumento result.
Si el valor de 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 evalúa siempre las dos expresiones, lo que podría incluir llamadas a procedimientos.No hay ningún homólogo de cortocircuito para Xor, ya que el resultado depende siempre de ambos operandos.Para cortocircuitar los operadores lógicos, vea AndAlso (Operador, Visual Basic) y OrElse (Operador) (Visual Basic).
Para operaciones bit a bit, el operador Xor realiza una comparación bit a bit de los bits ubicados de manera idéntica en dos expresiones numéricas y establece el bit correspondiente en result de acuerdo con la siguiente tabla.
Si el bit de expression1 es |
Y el bit de expression2 es... |
El bit de result es |
---|---|---|
1 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
Nota
Dado que los operadores lógicos y los operadores bit a bit tienen una prioridad inferior a la de otros operadores aritméticos y relacionales, las operaciones bit a bit deben incluirse entre paréntesis para garantizar una correcta ejecución.
Por ejemplo, 5 Xor 3 es 6. Para saber por qué, convierta 5 y 3 en sus representaciones binarias, 101 y 011. A continuación, utilice la tabla anterior para determinar que 101 Xor 011 es 110, que es la representación binaria del número 6 decimal.
Tipos de datos
Si los operandos constan de una expresión Boolean y una expresión numérica, Visual Basic convierte la expresión Boolean a 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. Vea la tabla "Comparaciones relacionales y bit a bit" en Tipos de datos de resultados de operador (Visual Basic).
Sobrecarga
El operador Xor se puede sobrecargar, lo que significa que una clase o una estructura pueden definir de nuevo su comportamiento cuando un operando tiene el tipo de dicha clase o estructura. Si el código utiliza este operador en una clase o estructura de este tipo, asegúrese de conocer su comportamiento redefinido. Para obtener más información, vea Procedimientos de operador (Visual Basic).
Ejemplo
En el ejemplo siguiente se usa el operador Xor para realizar una exclusión lógica (disyunción lógica exclusiva) entre dos expresiones. El resultado será un valor de tipo Boolean que indicará exactamente si una de las dos 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.
En el ejemplo siguiente se usa el operador Xor para realizar una exclusión lógica (disyunción lógica exclusiva) en los bits individuales de dos expresiones numéricas. El bit en el modelo resultante se establece si uno de los bits correspondientes de los operandos se ha establecido en 1 exactamente.
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 2, 12 y 14, respectivamente.
Vea también
Referencia
Operadores lógicos y bit a bit (Visual Basic)
Prioridad de operador en Visual Basic
Operadores enumerados por funcionalidad (Visual Basic)