C++ の論理 XOR

Suraj P 2023年10月12日
  1. C++ の論理 XOR
  2. C++ のブールオペランドで論理 XOR を使用する
  3. C++ の非ブールオペランドで論理 XOR を使用する
  4. C++ の複雑な式で論理 XOR を使用する
  5. C++ で mod 2 操作を使用して論理 XOR を実装する
C++ の論理 XOR

このチュートリアルでは、C++ で論理 XOR を実装する方法を学習します。

C++ の論理 XOR

C++ では、論理 OR(||)論理 AND(&&)がありますが、論理 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

!を使用しましたここでは、値をブール値に変換して否定し、2つの等しくない正の整数(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 を実装する

2つのブール値の間に論理 XOR を実装するもう 1つの方法は、モジュラス 2 演算を使用することです。A 論理 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
著者: 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