Xor — Operator (Visual Basic)
Wykonuje wykluczenie logiczne dla dwóch Boolean
wyrażeń lub wykluczenie bitowe w dwóch wyrażeniach liczbowych.
Składnia
result = expression1 Xor expression2
generatora
result
Wymagany. Dowolna Boolean
zmienna lub liczbowa. W przypadku porównania result
wartości logicznych jest wykluczenie logiczne (wykluczanie logiczne) dwóch Boolean
wartości. W przypadku operacji result
bitowych jest wartością liczbową reprezentującą wykluczenie bitowe (wykluczanie bitowe) dwóch wzorców bitowych.
expression1
Wymagany. Dowolne Boolean
wyrażenie lub liczbowe.
expression2
Wymagany. Dowolne Boolean
wyrażenie lub liczbowe.
Uwagi
W przypadku porównania result
wartości logicznych parametr ma True
wartość if i tylko wtedy, gdy dokładnie jedna z expression1
wartości i expression2
zwraca wartość .True
Oznacza to, że jeśli i tylko wtedy expression1
i expression2
są obliczane na przeciwległe Boolean
wartości. W poniższej tabeli przedstawiono sposób result
określania.
Jeśli expression1 jest |
I expression2 jest |
Wartość parametru result to |
---|---|---|
True |
True |
False |
True |
False |
True |
False |
True |
True |
False |
False |
False |
Uwaga
W porównaniu Xor
logicznym operator zawsze ocenia oba wyrażenia, które mogą obejmować wykonywanie wywołań procedur. Nie ma odpowiednika zwarciowego z Xor
elementem , ponieważ wynik zawsze zależy od obu operandów. W przypadku operatorów logicznych zwarciowych zobacz AndAlso Operator i OrElse Operator.
W przypadku operacji Xor
bitowych operator wykonuje bitowe porównanie identycznych bitów w dwóch wyrażeniach liczbowych i ustawia odpowiedni bit zgodnie result
z poniższą tabelą.
Jeśli bit w expression1 jest |
I bit w expression2 jest |
Bit w result pliku jest |
---|---|---|
1 | 1 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
0 | 0 | 0 |
Uwaga
Ponieważ operatory logiczne i bitowe mają niższy priorytet niż inne operatory arytmetyczne i relacyjne, wszelkie operacje bitowe powinny być ujęte w nawiasy, aby zapewnić dokładne wykonanie.
Na przykład 5 Xor
3 to 6. Aby zobaczyć, dlaczego tak jest, przekonwertuj wartości 5 i 3 na ich reprezentacje binarne, 101 i 011. Następnie użyj poprzedniej tabeli, aby określić, że 101 Xor 011 ma wartość 110, czyli binarną reprezentację liczby dziesiętnej 6.
Typy danych
Jeśli operandy składają się z jednego wyrażenia i jednego Boolean
wyrażenia liczbowego, Visual Basic konwertuje Boolean
wyrażenie na wartość liczbową (–1 dla True
i 0 dla False
) i wykonuje operację bitową.
Boolean
Dla porównania typ danych wyniku to Boolean
. W przypadku porównania bitowego typ danych wynikowych jest typem liczbowym odpowiednim dla typów expression1
danych i expression2
. Zobacz tabelę "Porównania relacyjne i bitowe" w obszarze Typy danych wyników operatorów.
Przeciążenie
Operator Xor
może być przeciążony, co oznacza, że klasa lub struktura może ponownie zdefiniować jego zachowanie, gdy operand ma typ tej klasy lub struktury. Jeśli kod używa tego operatora w takiej klasie lub strukturze, upewnij się, że rozumiesz jego ponownie zdefiniowane zachowanie. Aby uzyskać więcej informacji, zobacz Procedury operatorów.
Przykład 1
W poniższym przykładzie Xor
operator używa operatora do wykonywania wykluczenia logicznego (wykluczania logicznego) na dwóch wyrażeniach. Wynik jest wartością reprezentującą Boolean
, czy dokładnie jedno z wyrażeń to 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
W poprzednim przykładzie są generowane wyniki False
odpowiednio wartości , True
i False
.
Przykład 2
W poniższym przykładzie Xor
operator używa operatora do wykonywania wykluczenia logicznego (wykluczania logicznego) na poszczególnych bitach dwóch wyrażeń liczbowych. Bit we wzorcu wyników jest ustawiany, jeśli w operandach ustawiono dokładnie jeden z odpowiednich bitów w operandach na 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
Poprzedni przykład generuje wyniki odpowiednio 2, 12 i 14.