我想在不使用 Visual Basic .NET 中的内置 Xor 的情况下使用 Xor
异或说明:
它是逻辑以及按位逻辑异或运算符。
如果两个表达式都为 True 或两个表达式都为 False,则返回 True;否则返回 False。
此运算符不执行短路,它始终评估两个表达式,并且此运算符没有短路对应项
这甚至可能吗?如果是这样,怎么办?
XOR 只是一个逻辑运算。如果你愿意,你可以用 NAND 完全替换它,因为 NAND 在功能上是完整的。
异或可能是
(a and not b) or (not a and b)
或者
(a or b) and (not a or not b)
或者如果您根本不需要逻辑运算符...
If(a) Then
If(not b) Then
Return True
End If
Else If(not a) Then
If(b) Then
Return True
End If
End If
Return False
所以基本上,是的 - 我想有无数种方法可以做到这一点。但我想不出你为什么会想要。
Dim val1, val2 As Boolean
If Val1 <> Val2 Return False
Else Return True
End If
'那是 XNOR
The definition stated for XOR is incorrect, as other have noted. XOR is simply addition without carry.
Dim b1 As Boolean = False
Dim b2 As Boolean = False
For x As Integer = 1 To 2
For y As Integer = 1 To 2
Dim n1 As Integer = CInt(b1)
Dim n2 As Integer = CInt(b2)
Dim ans As Boolean = CBool((n1 + n2) And 1) 'add, ignore carries
Debug.WriteLine("b1 {0} b2 {1} ans {2}", b1, b2, ans)
b2 = Not b2
Next
b1 = Not b1
Next
我认为这个定义是不正确的。异或意味着只有一个表达式为真。该定义是Exclusive NOR。
但不管怎么说
XOR:
(bool1 and not bool2) or (not bool1 and bool2)
XNOR:
(bool1 and bool2) or (not bool1 and not bool2)
甚至简单地
bool1 = bool2