共用方式為


Xor 運算符 (Visual Basic)

在兩 Boolean 個表達式上執行邏輯排除,或對兩個數值表達式執行位排除。

語法

result = expression1 Xor expression2  

組件

result
必須的。 任何 Boolean 或數值變數。 針對布爾值比較, result 是兩 Boolean 個值的邏輯排除(獨佔邏輯分離)。 對於位運算,是一個數位元元 result ,表示兩個數值模式的位排除(獨佔位分離)。

expression1
必須的。 任何 Boolean 或數值表達式。

expression2
必須的。 任何 Boolean 或數值表達式。

備註

針對布爾值比較,result只有在 True 和的其中一個 expression2expression1 只評估為 True時才為 。 也就是說,只有當 和 expression2 評估為相反Boolean的值時expression1。 下表說明如何 result 判斷。

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

備註

在布爾比較中 Xor ,運算符一律會評估這兩個表達式,其中包括進行過程調用。 沒有與 的短線對應專案 Xor,因為結果一律相依於兩個作數。 如需 縮短邏輯 運算符,請參閱 AndAlso 運算符OrElse 運算子

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

如果 bit in 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 表達式轉換成數值(-1 代表 True 和 0), False並執行位運算。

Boolean為了比較,結果的數據類型為 Boolean。 為了進行位比較,結果數據類型是適用於 和expression1數據類型的expression2數值類型。 請參閱 運算子結果數據類型中的「關係型和位比較」數據表。

重載

Xor運算子可以多載,這表示當作數具有該類別或結構的類型時,類別或結構可以重新定義其行為。 如果您的程式代碼在這類類別或結構上使用這個運算符,請確定您已瞭解其重新定義的行為。 如需詳細資訊,請參閱 運算符程式

範例 1

下列範例會 Xor 使用 運算符,在兩個表達式上執行邏輯排除(獨佔邏輯分離)。 結果是一個值,表示其中一個 Boolean 表達式 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

上一個範例分別會產生、 TrueFalse的結果False

範例 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 的結果。

另請參閱