0

我想在不使用 Visual Basic .NET 中的内置 Xor 的情况下使用 Xor

异或说明:

它是逻辑以及按位逻辑异或运算符。

如果两个表达式都为 True 或两个表达式都为 False,则返回 True;否则返回 False。

此运算符不执行短路,它始终评估两个表达式,并且此运算符没有短路对应项

这甚至可能吗?如果是这样,怎么办?

4

4 回答 4

1

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

所以基本上,是的 - 我想有无数种方法可以做到这一点。但我想不出你为什么会想要。

于 2013-08-28T17:06:29.903 回答
0

Dim val1, val2 As Boolean If Val1 <> Val2 Return False Else Return True End If

'那是 XNOR

于 2013-11-11T20:38:16.203 回答
0

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
于 2013-08-28T17:34:43.583 回答
0

我认为这个定义是不正确的。异或意味着只有一个表达式为真。该定义是Exclusive NOR。

但不管怎么说

XOR:
(bool1 and not bool2) or (not bool1 and bool2)

XNOR:
(bool1 and bool2) or (not bool1 and not bool2)

甚至简单地

bool1 = bool2
于 2013-08-28T16:55:19.813 回答