异或运算符 (Visual Basic)
对两个 Boolean
执行逻辑异运算,或对两个数值表达式执行位异运算。
语法
result = expression1 Xor expression2
组成部分
result
必需。 任何 Boolean
或数值变量。 对于布尔比较,result
是两个 Boolean
值的逻辑异运算(互斥逻辑析取)的结果。 对于按位运算,result
是表示两个数值位模式的按位异运算(互斥按位析取)结果的数值。
expression1
必需。 任何 Boolean
或数值表达式。
expression2
必需。 任何 Boolean
或数值表达式。
注解
对于布尔比较,当且仅当 expression1
和 expression2
之一的计算结果为 True
时,result
才是 True
。 也就是说,当且仅当 expression1
和 expression2
的计算结果为相反的 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
表达式转换为数值(–1 表示 True
,0 表示 False
)并执行位运算。
对于 Boolean
比较,结果的数据类型为 Boolean
。 对于位比较,结果数据类型是适用于数据类型 expression1
和 expression2
的数值类型。 请参阅运算符结果的数据类型中的“关系比较和位比较”表。
重载
可重载 Xor
运算符,这意味着当操作数具有某一类或结构时,该类或结构可重新定义其行为。 如果你的代码在这种类或结构上使用此运算符,请确保了解其重新定义的行为。 有关详细信息,请参阅 Operator Procedures。
示例 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
前面的示例分别生成结果 False
、True
和 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。