자바의 XOR 연산자

1. 개요

이 짧은 튜토리얼에서 우리는 Java XOR 연산자 에 대해 배울 것 입니다. XOR 연산 에 대한 약간의 이론을 살펴본 다음 Java에서 구현하는 방법을 살펴 보겠습니다.

2. XOR 연산자

XOR 연산 의 의미론에 대해 약간 상기시켜 보겠습니다 . XOR , 또는 논리 연산 전용 또는 두 개의 부울 피연산자 반환됩니다 경우는 true 피연산자가 다른 경우에만 가능합니다. 따라서 두 피연산자의 값이 같으면 false를 반환합니다.

따라서 XOR 연산자는 예를 들어 동시에 참일 수없는 두 가지 조건을 확인해야 할 때 사용할 수 있습니다.

두 가지 조건 AB를 고려해 봅시다 . 다음 표는 A XOR B 의 가능한 값을 보여줍니다 .

XOR B의 동작은 동일하다 (A AND! B) OR (! A 및 B) . 명확성을 위해 괄호가 포함되었지만 AND 연산자가 OR 연산자 보다 우선 하므로 선택 사항 입니다.

3. Java로 어떻게합니까?

이제 Java 에서 XOR 연산 을 표현하는 방법을 살펴 보겠습니다 . 물론 우리는 &&|| 연산자이지만 , 우리가 보게 될 약간 장황 할 수 있습니다 .

두 개의 부울 속성 ( dieselmanual)이 있는 Car 클래스를 상상해보십시오 . 이제 자동차가 디젤인지 수 동인지, 둘 다 아닌지 말하고 싶다고 가정 해 보겠습니다.

하자이가 사용 확인 &&를 하고 || 연산자 :

Car car = Car.dieselAndManualCar(); boolean dieselXorManual = (car.isDiesel() && !car.isManual()) || (!car.isDiesel() && car.isManual());

특히 ^ 기호로 표시되는 Java XOR 연산자 가 있다는 점을 고려하면 약간 깁니다 . 이는 비트 연산자입니다. 즉, 결과를 반환하기 위해 두 값의 일치하는 비트를 비교하는 연산자입니다. 에서 XOR의 동일 위치의 2 비트 값이 동일한 경우, 상기 생성 된 비트 그렇지 않으면 0이 될 것이며, 이는 1 일 것이다.

따라서 번거로운 XOR 구현 대신 ^ 연산자를 직접 사용할 수 있습니다 .

Car car = Car.dieselAndManualCar(); boolean dieselXorManual = car.isDiesel() ^ car.isManual();

우리가 알 수 있듯이 ^ 연산자를 사용하면 XOR 연산을 더 간결하게 표현할 수 있습니다.

마지막으로, XOR 연산자는 다른 비트 연산자와 마찬가지로 모든 기본 유형에서 작동 한다는 점을 언급 할 가치가 있습니다. 예를 들어, 이진 표현이 각각 00000001과 000000011 인 두 정수 1과 3을 생각해 봅시다. 그런 다음 이들 사이에 XOR 연산자를 사용 하면 정수 2가됩니다.

assertThat(1 ^ 3).isEqualTo(2);

두 번째 비트 만이 두 숫자에서 다르 므로이 비트에 대한 XOR 연산자 의 결과는 1이됩니다. 다른 모든 비트는 동일하므로 비트 별 XOR 결과는 0이되어 최종 값 00000010이됩니다. 이진 표현 정수 2의.

4. 결론

이 기사에서는 Java XOR 연산자 에 대해 배웠습니다 . 우리는 XOR 연산 을 표현하는 간결한 방법을 제공한다는 것을 알았습니다 .

평소처럼 기사의 전체 코드는 GitHub에서 찾을 수 있습니다.