C++ 中的邏輯異或
Suraj P
2023年1月30日
2022年4月20日
-
C++ 中的邏輯
XOR
-
在 C++ 中使用邏輯
XOR
和布林運算元 -
在 C++ 中使用邏輯
XOR
與非布林運算元 -
在 C++ 中使用具有複雜表示式的邏輯
XOR
-
在 C++ 中使用
mod 2
操作實現邏輯XOR
我們將在本教程中學習如何在 C++ 中實現邏輯 XOR
。
C++ 中的邏輯 XOR
在 C++ 中,雖然我們有 logical OR (||)
和 logical AND (&&)
,但我們沒有 logical XOR
。使用現有的運算子,我們可以模擬邏輯 XOR
的功能。
邏輯 XOR
運算子在 C++ 中不存在,因為它只是一個具有布林值的等效不等於
運算子。
所以一般語法是:A 和 B 是布林值。
A logical XOR B is equivalent to A!=B
如果我們檢視 XOR
的真值表,我們知道 XOR
只不過是布林值的不等式
檢查器。所以我們可以使用不等於 (!=)
運算子來模擬邏輯 XOR
。
在 C++ 中使用邏輯 XOR
和布林運算元
#include <bits/stdc++.h>
using namespace std;
int main()
{
bool a = 0;
bool b = 1;
if(a!=b)
{
cout<<"Yes\n";
}
else
cout<<"NO\n";
}
輸出:
Yes
在 C++ 中使用邏輯 XOR
與非布林運算元
在這裡,我們必須進行修改。由於這些值是非布林值,我們必須先將它們轉換為布林值,然後應用不等於 (!=)
運算子。
#include <bits/stdc++.h>
using namespace std;
int main()
{
int a = 10;
int b = 20;
if((!a) != (!b))
{
cout<<"Yes\n";
}
else
cout<<"NO\n";
}
輸出:
NO
我們用了 !
這裡將值轉換為布林值並將它們取反,以便將兩個不相等的正整數 (true
) 評估為 false
。
在 C++ 中使用具有複雜表示式的邏輯 XOR
我們已經瞭解,我們首先需要將值轉換為布林值,然後執行邏輯 XOR
操作。我們將此想法擴充套件為對複雜操作執行邏輯 XOR
操作。
#include <bits/stdc++.h>
using namespace std;
int main()
{
int a = 10;
int b = 20;
int x = 50;
int y = 100;
if( !(a < b) != !(x >= y) )
{
cout<<"Yes\n";
}
else
cout<<"NO";
}
我們可以看到 (a<b) Logical XOR (x>=y)
寫成!(a < b) != !(x >= y)
。
輸出:
Yes
在 C++ 中使用 mod 2
操作實現邏輯 XOR
在兩個布林值之間實現邏輯 XOR
的另一個方法是使用模 2 運算。A logical XOR B
可以寫成 (A+B) % mod 2
。
#include <bits/stdc++.h>
using namespace std;
bool XOR(bool x, bool y)
{
return (x + y) % 2;
}
int main()
{
cout<< "XOR(0, 0): " << XOR(0, 0) << endl;
cout<< "XOR(1, 0): " << XOR(1, 0) << endl;
}
輸出:
XOR(0, 0): 0
XOR(1, 0): 1
Author: Suraj P