xor (= exclusive or)란? #
배타적 논리합(排他的論理合, exclusive or)은 수리 논리학에서 주어진 2개의 명제 가운데 1개만 참일 경우를 판단하는 논리 연산이다. 약칭으로 XOR, EOR, EXOR라고도 쓴다.
벤다이어그램 #
벤다이어그램으로 표현하면 아래와 같다. 이다. (complement)
출처 geogebra진리표 #
진리표로 나타내면 아래와 같다.
Operand 1 | Operand 2 | Result |
---|---|---|
false | false | false |
false | true | true |
true | false | true |
true | true | false |
xor는 Operand 1, 2의 값 중 하나만 true인 경우 결과값으로 true를 반환한다.
이를 이렇게 해석 할 수도 있다.
input 2개의 (이항연산이므로) 인자가 서로 다르면, true를 반환한다.
같으면, false를 반환한다.
code #
code로 나타내보자.
// js
const A = true;
const B = false;
// xor operator = ^
B ^ B // 0
B ^ A // 1
A ^ B // 1
A ^ A // 0
자바스크립트의 ^ operator는 xor연산과 같다.
단 그 반환값을 0, 1로 반환하는데 이게 싫고 boolean으로 받고 싶다면 아래와 같이 boolean으로 형변환해줄 수 있습니다.
// js
!!(B ^ A) // true
!!(B ^ B) // false
// java
public class xor {
public static void main(String[] args) {
boolean a = true;
boolean b = false;
boolean result = a ^ b;
System.out.println("a ^ b: " + result); // a ^ b: true
}
}
정리 #
xor는 서로 다른 인자를 비교하는 경우 true 서로 같은 인자를 비교하는 경우 false를 반환합니다.