Xor 运算符 (Visual Basic)

对两 Boolean 个表达式执行逻辑排除,或对两个数值表达式执行按位排除。

语法

result = expression1 Xor expression2  

部件

result
必填。 任何 Boolean 变量或数值变量。 对于布尔比较, result 是两 Boolean 个值的逻辑排除(独占逻辑分解)。 对于按位运算,是一个数值, result 表示两个数值模式的按位排除(排他位除法)。

expression1
必填。 任何 Boolean 或数值表达式。

expression2
必填。 任何 Boolean 或数值表达式。

注解

对于布尔比较, resultTrue 当和仅当其中一个 expression1 计算 expression2 结果为 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 表达式转换为数值(–1 for 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

上一个示例分别生成结果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 的结果。

另请参阅