Partilhar via


Operador Xor (Visual Basic)

Executa uma exclusão lógica em duas Boolean expressões ou uma exclusão bit a bit em duas expressões numéricas.

Sintaxe

result = expression1 Xor expression2  

Partes

result
Obrigatório. Qualquer Boolean variável ou variável numérica. Para comparação booleana, result é a exclusão lógica (disjunção lógica exclusiva) de dois Boolean valores. Para operações bitwise, result é um valor numérico que representa a exclusão bitwise (disjunção bitwise exclusiva) de dois padrões de bits numéricos.

expression1
Obrigatório. Qualquer Boolean expressão ou expressão numérica.

expression2
Obrigatório. Qualquer Boolean expressão ou expressão numérica.

Observações

Para comparação booleana, result é True se e somente se exatamente um dos expression1 e expression2 avalia a True. Ou seja, se e somente se expression1 e expression2 avaliar para valores opostos Boolean . A tabela a seguir ilustra como result é determinado.

Se expression1 for E expression2 é O valor de result é
True True False
True False True
False True True
False False False

Nota

Em uma comparação booleana, o operador sempre avalia ambas as expressões, o Xor que pode incluir fazer chamadas de procedimento. Não há contrapartida de curto-circuito para Xor, porque o resultado sempre depende de ambos os operandos. Para operadores lógicos de curto-circuito , consulte AndAlso Operator e OrElse Operator.

Para operações bitwise, o Xor operador executa uma comparação bit a bit de bits posicionados de forma idêntica em duas expressões numéricas e define o bit correspondente de acordo com result a tabela a seguir.

Se bit in expression1 é E pouco a pouco expression2 é O bit in result é
1 1 0
1 0 1
0 1 1
0 0 0

Nota

Uma vez que os operadores lógicos e bitwise têm uma precedência menor do que outros operadores aritméticos e relacionais, quaisquer operações bitwise devem ser colocadas entre parênteses para garantir uma execução precisa.

Por exemplo, 5 Xor 3 é 6. Para ver por que isso acontece, converta 5 e 3 para suas representações binárias, 101 e 011. Em seguida, use a tabela anterior para determinar que 101 Xor 011 é 110, que é a representação binária do número decimal 6.

Tipos de Dados

Se os operandos consistirem em uma Boolean expressão e uma expressão numérica, o Visual Basic converte a Boolean expressão em um valor numérico (–1 para True e 0 para False) e executa uma operação bitwise.

Para uma Boolean comparação, o tipo de dados do resultado é Boolean. Para uma comparação bit a bits, o tipo de dados de resultado é um tipo numérico apropriado para os tipos de dados de expression1 e expression2. Consulte a tabela "Comparações relacionais e bitwise" em Tipos de dados de resultados do operador.

Sobrecarga

O Xor operador pode estar sobrecarregado, o que significa que uma classe ou estrutura pode redefinir seu comportamento quando um operando tem o tipo dessa classe ou estrutura. Se seu código usa esse operador em tal classe ou estrutura, certifique-se de entender seu comportamento redefinido. Para obter mais informações, consulte Procedimentos do operador.

Exemplo 1

O exemplo a seguir usa o operador para executar exclusão Xor lógica (disjunção lógica exclusiva) em duas expressões. O resultado é um Boolean valor que representa se exatamente uma das expressõ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

O exemplo anterior produz resultados de False, True, e False, respectivamente.

Exemplo 2

O exemplo a seguir usa o operador para executar a Xor exclusão lógica (disjunção lógica exclusiva) nos bits individuais de duas expressões numéricas. O bit no padrão de resultado é definido se exatamente um dos bits correspondentes nos operandos estiver definido como 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

O exemplo anterior produz resultados de 2, 12 e 14, respectivamente.

Consulte também