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 Xorelementem , 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 Falseodpowiednio wartości , Truei 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.

Zobacz też