我想用異或不使用內置的一個Visual Basic .NET中如何在不使用內置的VB中使用Xor?
異或描述:
這是合乎邏輯的,以及按位邏輯異或運算符。
如果兩個表達式均爲True或兩個表達式均爲False,則返回True;否則返回False。
這個操作符不執行短路,它總是會評估表達式並沒有該運營商
沒有短路對應的是這甚至可能嗎?如果是這樣,怎麼樣?
我想用異或不使用內置的一個Visual Basic .NET中如何在不使用內置的VB中使用Xor?
異或描述:
這是合乎邏輯的,以及按位邏輯異或運算符。
如果兩個表達式均爲True或兩個表達式均爲False,則返回True;否則返回False。
這個操作符不執行短路,它總是會評估表達式並沒有該運營商
沒有短路對應的是這甚至可能嗎?如果是這樣,怎麼樣?
XOR是一個簡單的邏輯運算。如果你願意,你可以完全用NAND來替代它,因爲NAND在功能上是完整的。
XOR可能是
(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
因此,基本上,是的 - 我想象有很多方法可以做到這一點。但我想不出爲什麼你會想要。
我認爲這個定義是不正確的。 「異或」表示只有一個表達式是真實的。該定義是Exclusive NOR。
但無論如何
XOR:
(bool1 and not bool2) or (not bool1 and bool2)
XNOR:
(bool1 and bool2) or (not bool1 and not bool2)
甚至乾脆
bool1 = bool2
所以基本上這就是XOR所做的事情? http://pastebin.com/raw.php?i=BxcAvJJn –
XOR的定義不正確,正如其他人所指出的那樣。 XOR只是無用的加法。
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
Dim val1, val2 As Boolean
If Val1 <> Val2 Return False
Else Return True
End If
「這是XNOR
哪些錯誤的 「內置一個」? – Magnus
我看不出這將是怎麼可能的。如果兩個表達式都不計算這兩個表達式,它如何測試這兩個表達式是否計算爲相同的布爾值? – tinstaafl
我只想知道是否有可能不使用內置的。 –