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 사용

여기서 우리는 수정을 해야 합니다. 값이 부울이 아니므로 먼저 부울로 변환한 다음 not equal to (!=) 연산자를 적용해야 합니다.

#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 논리적 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