对两 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
和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 的结果。