C++ 中的邏輯異或

Suraj P 2023年1月30日 2022年4月20日
  1. C++ 中的邏輯 XOR
  2. 在 C++ 中使用邏輯 XOR 和布林運算元
  3. 在 C++ 中使用邏輯 XOR 與非布林運算元
  4. 在 C++ 中使用具有複雜表示式的邏輯 XOR
  5. 在 C++ 中使用 mod 2 操作實現邏輯 XOR
C++ 中的邏輯異或

我們將在本教程中學習如何在 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
Suraj P avatar Suraj P avatar

A technophile and a Big Data developer by passion. Loves developing advance C++ and Java applications in free time works as SME at Chegg where I help students with there doubts and assignments in the field of Computer Science.

LinkedIn GitHub

相關文章 - C++ Operator