C++의 논리적 XOR
Suraj P
2023년10월12일
-
C++의 논리적
XOR
-
C++에서 부울 피연산자와 함께 논리
XOR
사용 -
C++에서 부울이 아닌 피연산자와 함께 논리
XOR
사용 -
C++에서 복잡한 표현식과 함께 논리적
XOR
사용 -
C++에서
mod 2
연산을 사용하여 논리적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