Xor 运算符 (Visual Basic)

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

语法

result = expression1 Xor expression2  

部件

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

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

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

注解

对于布尔比较, result 仅 True 当和仅当其中一个 expression1 计算 expression2 结果为 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 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

上一个示例分别生成结果False和TrueFalse结果。

示例 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 的结果。

另请参阅