비트 & 대 논리 && 연산자

1. 소개

Java에서는 "AND"라고하는 두 가지 방법이 있습니다. 하지만 어느 것을 사용해야합니까?

이 튜토리얼에서는 &와 &&의 차이점을 살펴볼 것입니다. 그리고, 우리는 그 과정에서 비트 연산과 단락에 대해 배울 것입니다.

2. Bitwise AND 사용

비트 AND (&) 연산자는 두 정수의 각 이진 숫자를 비교하고 둘 다 1이면 1을 반환하고 그렇지 않으면 0을 반환합니다.

두 개의 정수를 살펴 보겠습니다.

int six = 6; int five = 5;

다음으로이 숫자에 비트 AND 연산자를 적용 해 보겠습니다.

int resultShouldBeFour = six & five; assertEquals(4, resultShouldBeFour);

이 연산을 이해하기 위해 각 숫자의 이진 표현을 살펴 보겠습니다.

Binary of decimal 4: 0100 Binary of decimal 5: 0101 Binary of decimal 6: 0110

& 연산자는 각 비트에 대해 논리 AND를 수행하고 새 이진수를 반환합니다.

0110 0101 ----- 0100

마지막으로 결과 인 0100을 다시 10 진수 인 4 로 변환 할 수 있습니다 .

테스트 Java 코드를 보겠습니다.

int six = 6; int five = 5; int resultShouldBeFour = six & five; assertEquals(4, resultShouldBeFour);

2.1. 부울과 함께 & 사용

또한 부울 피연산자 와 함께 비트 AND ( & ) 연산자를 사용할 수 있습니다 . 그것은 반환 사실 두 피연산자가있는 경우에만 true를 , 그렇지 않으면 반환 허위.

세 가지 부울 변수를 사용 하겠습니다 .

boolean trueBool = true; boolean anotherTrueBool = true; boolean falseBool = false;

다음으로 trueBoolanotherTrueBool 변수에 비트 AND 연산자를 적용 해 보겠습니다 .

boolean trueANDtrue = trueBool & anotherTrueBool;

그러면 결과는 true가 됩니다.

다음으로 trueBoolfalseBool 에 비트 AND 연산자를 적용보겠습니다 .

boolean trueANDFalse = trueBool & falseBool;

이 경우 결과는 false 입니다.

테스트 Java 코드를 보겠습니다.

boolean trueBool = true; boolean anotherTrueBool = true; boolean falseBool = false; boolean trueANDtrue= trueBool & anotherTrueBool; boolean trueANDFalse = trueBool & falseBool; assertTrue(trueANDtrue); assertFalse(trueANDFalse);

3. 논리 AND 사용

& 와 마찬가지로 논리 AND ( && ) 연산자는 두 부울 변수 또는 표현식의 값을 비교합니다. 그리고, 그것은 또한 반환 사실 두 피연산자가있는 경우에만 true를 , 그렇지 않으면 반환 허위 .

세 가지 부울 변수를 사용 하겠습니다 .

boolean trueBool = true; boolean anotherTrueBool = true; boolean falseBool = false;

다음으로 trueBoolanotherTrueBool 변수에 논리 AND 연산자를 적용 해 보겠습니다 .

boolean trueANDtrue = trueBool && anotherTrueBool;

그러면 결과는 true가 됩니다.

다음으로 trueBoolfalseBool 에 논리 AND 연산자를 적용보겠습니다 .

boolean trueANDFalse = trueBool && falseBool;

이 경우 결과는 false 입니다.

테스트 Java 코드를 보겠습니다.

boolean trueBool = true; boolean anotherTrueBool = true; boolean falseBool = false; boolean anotherFalseBool = false; boolean trueANDtrue = trueBool && anotherTrueBool; boolean trueANDFalse = trueBool && falseBool; boolean falseANDFalse = falseBool && anotherFalseBool; assertTrue(trueANDtrue); assertFalse(trueANDFalse); assertFalse(falseANDFalse);

3.1. 단락

그렇다면 차이점은 무엇입니까? 음, &&의 운영자 단락. 즉, 왼쪽 피연산자 또는 표현식이 false 일 때 오른쪽 피연산자 또는 표현식을 평가하지 않습니다 .

거짓으로 평가되는 두 가지 표현식을 살펴 보겠습니다.

First Expression: 2<1 Second Expression: 4<5 

표현식 2 <14 <5 에 논리 AND 연산자를 적용 하면 첫 번째 표현식 2 <1 만 평가 하고 false를 반환합니다 .

boolean shortCircuitResult = (2<1) && (4<5); assertFalse(shortCircuitResult);

3.2. 정수와 함께 && 사용

& 연산자를 부울 또는 숫자 유형과 함께 사용할 수 있지만 &&는 부울 피연산자에만 사용할 수 있습니다. 정수 피연산자와 함께 사용하면 컴파일 오류가 발생합니다.

int five = 2; int six = 4; int result = five && six;

4. 비교

  1. & 연산자는 항상 두 표현식을 모두 평가하는 반면 && 연산자는 첫 번째 표현식이 참인 경우에만 두 번째 표현식을 평가 합니다.
  2. &는 각 피연산자를 비트 단위로 비교하지만 &&는 부울에서만 작동합니다.

5. 결론

이 기사에서는 비트 연산자를 사용하여 두 자리의 비트를 비교하여 새 자리를 얻었습니다. 또한 논리 && 연산자를 사용하여 두 개의 부울을 비교하여 부울 값을 얻었습니다.

또한 두 연산자 간의 몇 가지 주요 차이점을 확인했습니다.

항상 그렇듯이 GitHub에서이 튜토리얼의 코드를 찾을 수 있습니다.