Xor (Operador, Visual Basic)

Actualización: noviembre 2007

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

Partes

  • 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. La tabla siguiente ilustra cómo se determina el argumento 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 evalúa siempre las dos expresiones, lo que podría incluir realizar 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) y OrElse (Operador).

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:

Al tener los operadores lógicos y bit a bit una prioridad inferior a la de otros operadores aritméticos y relacionales, las operaciones bit a bit deben efectuarse 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.

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.

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

Conceptos

Operadores lógicos y bit a bit en Visual Basic

Referencia

Operadores lógicos y operadores bit a bit

Prioridad de operador en Visual Basic

Operadores enumerados por funcionalidad