Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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 numérica ou qualquer. Para comparação booliana, result é a exclusão lógica (disjunção lógica exclusiva) de dois Boolean valores. Para operações bit a bit, result é um valor numérico que representa a exclusão bit a bit (disjunção bit a bit exclusiva) de dois padrões de bit numérico.
expression1
Obrigatório Qualquer Boolean expressão numérica ou qualquer.
expression2
Obrigatório Qualquer Boolean expressão numérica ou qualquer.
Observações
Para comparação booliana, result é True se e somente se exatamente um de expression1 e expression2 avalia como True. Ou seja, se e somente se expression1 e expression2 avaliar como 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 |
Observação
Em uma comparação booliana, o Xor operador sempre avalia ambas as expressões, o que pode incluir a realização de chamadas de procedimento. Não há nenhum equivalente de curto-circuito para Xor, porque o resultado sempre depende de ambos os operandos. Para operadores lógicos de curto-circuito , consulte Operador AndAlso e Operador OrElse.
Para operações bit a bit, 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 result acordo com a tabela a seguir.
Se o bit dentro expression1 for |
E bit in expression2 é |
O bit dentro result é |
|---|---|---|
| 1 | 1 | 0 |
| 1 | 0 | 1 |
| 0 | 1 | 1 |
| 0 | 0 | 0 |
Observação
Como os operadores lógicos e bit a bit têm uma precedência menor do que outros operadores aritméticos e relacionais, todas as operações bit a bit devem ser colocadas entre parênteses para garantir a execução precisa.
Por exemplo, 5 Xor 3 é 6. Para ver por que isso é assim, converta 5 e 3 em 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 converterá a Boolean expressão em um valor numérico (–1 para True e 0 para False) e executará uma operação bit a bit.
Para uma Boolean comparação, o tipo de dados do resultado é Boolean. Para uma comparação bit a bit, 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 bit a bit" nos tipos de dados de resultados do operador.
Sobrecarga
O Xor operador pode ser sobrecarregado, o que significa que uma classe ou estrutura pode redefinir seu comportamento quando um operando tem o tipo dessa classe ou estrutura. Se o código usar esse operador em tal classe ou estrutura, certifique-se de entender seu comportamento redefinido. Para obter mais informações, consulte Procedimentos de Operador.
Exemplo 1
O exemplo a seguir usa o Xor operador para executar a exclusão 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, Truee False, respectivamente.
Exemplo 2
O exemplo a seguir usa o Xor operador para executar a 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 será 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.