Original article: Java Operator – &, && (AND) || (OR) Logical Operators

우리는 대부분의 프로그래밍 언어에서 변수간의 연산을 위해 연산자를 사용합니다

연산자들은 산술 연산자, 대입 연산자, 비교 연산자, 논리 연산자 등의 여러가지 카테고리로 분류할 수 있다.
이 글에서는, 비트 연산자 AND와 논리 연산자 AND(&&) 및 OR(||) 에 대해 설명합니다.

비트 연산자 AND를 사용하는 방법

기호 &는 비트 연산자 AND를 나타냅니다. 이는 주어진 숫자들의 이진값을 계산합니다. 이 숫자들의 이진값은 저희에게 보여질때는 10진법으로 보여지게 되죠.
& 연산자를 이용해 연산이 될때는, 왼쪽부터 시작하여 두 숫자의 각 자리 값을 연산하게 됩니다.

좀더 잘 이해할 수 있도록 예시를 보여드리겠습니다:

System.out.println(10 & 12);
// 8을 반환합니다. 

하나씩 살펴봅시다

10의 이진값은 1010입니다.
12의 이진값은 1100입니다.

다음은 연산 시작 전 염두에 두어야 할 사항입니다:

  • 1 and 0 => 0
  • 0 and 1 => 0
  • 1 and 1 => 1
  • 0 and 0 => 0

자, 이제 연산을 시작해봅시다.

10의 첫번째 자리의 수는 1이고 12의 첫번째 자리 수 또한 1입니다. 따라서:
1 and 1 = 1.

두번째 자리의 수로 넘어가봅시다. - 10은 0이고 12는 1입니다:
1 and 0 = 0.

세번째 자리의 수에 대해서 - 10은 1이고 12는 0입니다:
1 and 0 = 0.

네번째 자리 수에 대해서 - 10은 0이고 12도 0입니다:
0 and 0 = 0.

자, 이제 계산된 숫자들을 모두 나열해봅시다. 이는 1000이 될것입니다.
이진값 1000을 10진법으로 변환한다면 8이 되며 따라서 위 연산의 결과는 8입니다.

논리 연산자 AND를 사용하는 방법

논리 연산자는 조건을 연산하기 위해 사용됩니다. 주어진 조건에 따라서 truefalse가 반환됩니다,
기호 &&AND 연산자를 나타냅니다. 이는 두 문(statement)이나 조건문을 연산하고 문/조건문이 둘다 참일때만 true를 반환합니다.

구문은 다음과 같습니다

statment1/condition1 && statemnt2/condition2

위에서 볼수 있듯이 연산자에 의해 구분되어지는 두개의 문/조건문이 있습니다. 연산자는 두 문/조건문을 계산하고 결과를 반환합니다 - 결과는 true 이거나 false이죠

예시는 다음과 같습니다:

System.out.println((10 > 2) && (8 > 4));
// true

두 조건문이 모두 참이기 때문에 이 연산은 true를 반환합니다 - 10은 2보다 큽니다, 그리고 8은 4보다 큽니다.
두 조건 중 하나라도 참이 아니라면 false를 반환받게 됩니다.

&& 연산자에 대해 더 이해하려면, true 값을 얻기 위해선 두 조건이 모두 참이어야 함을 알아야합니다.

다음은 false를 반환하는 다른 예시입니다:

System.out.println((2 > 10) && (8 > 4));
// false

여기서 2는 10보다 크지 않지만 8은 4보다 큽니다 - 따라서 우리는 false를 반환 받게 됩니다.
조건문중 하나가 참이 아니기 때문이죠.

  • 두 조건문 모두 참 => true
  • 두 조건문 중 하나가 거짓 => false
  • 두 조건문 모두 거짓 => false

논리 연산자 OR를 사용하는 방법

기호 ||OR 연산자를 나타내기 위해 사용됩니다. 이 연산자는 두 조건문이 모두 거짓인 경우만 false를 반환합니다.
즉 두 조건문이 모두 참이면 우리는 true를 반환받고, 둘중 하나의 조건문이라도 true라면 이 경우 또한 true를 반환받게 됩니다.

관련 구문은 다음과 같습니다

statment1/condition1 || statemnt2/condition2

몇가지 예시를 살펴보겠습니다.

System.out.println((6 < 1) || (4 > 2));  
// true

하나의 조건문이 참이기 때문에 true를 반환하게 됩니다.

  • 두 조건문이 모두 참 => true
  • 두 조건문 중 하나가 참 => true
  • 두 조건문 모두 거짓 => false

결론

이 글에서, 우리는 Java에서 어떻게 비트 연산자 &를 사용하고, 이에 따른 결과는 어떤것인지 배웠습니다.
또한 Java에서 논리연산자 &&와 || 를 어떻게 사용하는지 배웠습니다.
연산에서 사용하는 조건문에 따라 각 연산이 반환하는 값을 배웠습니다.

즐거운 코딩하세요!