각주:[1](배너_이미지_출처)


xor (= exclusive or)란? #

배타적 논리합(排他的論理合, exclusive or)은 수리 논리학에서 주어진 2개의 명제 가운데 1개만 참일 경우를 판단하는 논리 연산이다. 약칭으로 XOR, EOR, EXOR라고도 쓴다.

벤다이어그램 #

벤다이어그램으로 표현하면 아래와 같다. A=AcA' = A^c이다. (complement)

xor venn diagram image
출처 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를 반환합니다.


image 출처