共用方式為


Xor 運算子 (Visual Basic)

在兩個 Boolean 運算式上執行邏輯排除,或在兩個數值運算式上執行位元排除。

語法

result = expression1 Xor expression2  

組件

result
必要。 任何 Boolean 或數值變數。 針對布林比較,result 為兩個 Boolean 值的邏輯排除 (內含邏輯分離)。 針對位元運算,result 為數值,表示兩個數值位元模式的位元排除 (內含位元分離)。

expression1
必要。 任何 Boolean 或數值運算式。

expression2
必要。 任何 Boolean 或數值運算式。

備註

針對布林值比較,result 只有在剛好其中一個 expression1expression2 評估為 True 時才為 True。 也就是說,只有在 expression1expression2 評估為相反 Boolean 值時。 下表說明如何判斷 result

如果 expression1 expression2 result 的值即為
True True False
True False True
False True True
False False False

注意

在布林值比較中,Xor 運算子一律會評估這兩個運算式,其中包括進行程序呼叫。 沒有 Xor 的最少運算對應項目,因為結果一律相依於這兩個運算元。 如需「最少運算」邏輯運算子,請參閱 AndAlso 運算子OrElse 運算子

針對位元運算,Xor 運算子會在兩個數值運算式之間執行相同位置之位元的位元比較,並根據下列資料表設定 result 中的對應位元。

expression1 中的位元為 expression2 中的位元為 result 中的位元為
1 1 0
1 0 1
0 1 1
0 0 0

注意

因為邏輯與位元運算子的優先順序低於其他算術與關係運算子,所以任何位元運算都應該以括弧括住,以確保正確執行。

例如,5 Xor 3 等於 6。 若要查看原因,請將 5 與 3 轉換為其二進位標記法 (101 與 011)。 然後使用上述資料表來判斷 101 Xor 011 等於 110,這是十進位數 6 的二進位標記法。

資料類型

若運算元包含一個 Boolean 運算式與一個數值運算式,則 Visual Basic 會將 Boolean 運算式轉換成數值 (True 為 –1,而 False 為 0),並執行位元運算。

針對 Boolean 比較,結果的資料類型為 Boolean。 針對位元比較,結果資料類型是適用於 expression1expression2 資料類型的數值類型。 請參閱運算子結果的資料類型中的「關聯式與位元比較」資料表。

多載化

Xor 運算子可以「多載」,這表示當運算元具有該類別或結構的類型時,類別或結構可以重新定義其行為。 若您的程式碼在此種類別或結構上使用此運算子,請務必了解其重新定義的行為。 如需詳細資訊,請參閱 Operator Procedures

範例 1

下列範例會使用 Xor 運算子,在兩個運算式上執行邏輯排除 (排除邏輯分離)。 結果為一個表示其中一個運算式是否剛好為 TrueBoolean 值。

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

上述範例分別會產生 FalseTrueFalse 的結果。

範例 2

下列範例會使用 Xor 運算子,在兩個數值運算式的個別位元上執行邏輯排除 (排除邏輯分離)。 若將運算元的其中一個對應位元設定為 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

上述範例分別會產生 2、12 與 14 的結果。

另請參閱