개발 프로세스/Back-end

[Java] 연산자 : 관계 연산자, 논리 연산자, 비트 연산자

slowreem 2021. 4. 5. 15:57

2. 관계 연산자

   2-1. 관계 연산자의 종류

관계 연산자 의미 설명
== 같다 두 값이 동일하면 참이다
!= 같지 않다 두 값이 다르면 참이다
> 크다 왼쪽이 크면 참이다
< 작다 왼쪽이 작으면 참이다
>= 크거나 같다 왼쪽이 크거나 같으면 참이다
<= 작거나 같다 왼쪽이 작거나 같으면 참이다

 

 

   2-2. 관계 연산자와 대입 연산자의 차이점

  • == (관계연산자) : 값이 같은지 확인 
  • = (대입 연산자) : 오른쪽의 값을 왼쪽에 대입

 

3. 논리 연산자

   3-1.  논리 연산자의 종류

   AND와 OR의 경우 연산자를 하나씩(&, |)만 써도 수행에 문제가 없지만 비트 연산자와의 구분을 위해 두 번 쓰는 것(&&, ||)이 권장된다.

 

논리 연산자 의미 설명
&& 또는 & AND 둘 다 참이어야 참
|| 또는 | OR 둘 중 하나만 참이어도 참
! NOT 참이면 거짓, 거짓이면 참
^ XOR 피연산자가 하나는 참이고
다른 하나가 거짓일 경우에만 참

 

 

 3-2. true(O), false(X) 표

A B A && B A || B !A A^B
O O O O X X
O X X O X O
X O X O O O
X X X X O X

 

 

4. 비트 연산자

비트(bit) 연산자는 정수나 문자 등을 2진수로 변환한 다음 각 자리의 비트끼리 연산을 수행한다. 비트 연산자에 대해 이해하려면 먼저 2진수와 16진수의 개념과 변환 방법을 명확히 알아야 한다.

 

   4-1. 비트 연산자의 종류

비트 연산자 설명 의미
& 비트 논리곱 연산자(AND) 둘 다 1이면 1이다.
| 비트 논리합 연산자(OR) 둘 중 하나만 1이면 1이다.
^ 비트 배타적 논리합 연산자(XOR) 둘이 같으면 0이고, 둘이 다르면 1이다.
~ 비트 부정 연산자 1은 0으로 바꾸고, 0은 1로 바꾼다.
<< 왼쪽 시프트 연산자 비트를 왼쪽으로 시프트한다.
>> 오른쪽 시프트 연산자 비트를 오른쪽으로 시프트한다.

 

   4-2. 비트 논리곱 연산자 &

1 0 1 0 10
0 1 1 1 7
0 0 1 0 2

 

System.out.printf("10 & 7 = %d \n", 10 & 7 );
2

 

 

   4-3. 비트 논리합 연산자  |

1 0 1 0 10
0 1 1 1 7
1 1 1 1 15

 

System.out.printf("10 | 7 = %d \n", 10 | 7 );
15

 

 

   4-4. 비트 배타적 논리합 연산자 ^

1 0 1 0 10
0 1 1 1 7
1 1 0 1 13

 

System.out.printf("10 ^ 7 = %d \n", 10 ^ 7 );
13

 

 

 

   4-5. 비트 부정 연산자 ~

비트 부정 연산자(또는 보수 연산자)는 각 비트를 반대로 만드는 연산자이다. 즉 0은 1로 바꾸고, 1은 0으로 바꾼다. 이렇게 반전된 값을 1의 보수라 하며, 그 값에 1을 더한 값을 2의 보수라 한다. 비트 부정 연산자는 해당 값의 음수(-)를 찾고자 할 때 사용한다.

int a = 12345;

System.out.printf("%d \n", ~a);      // 1의 보수
System.out.printf("%d \n", ~a + 1);  // 2의 보수 (음수)
-12346
-12345

 

 

 

<참고 자료>

www.hanbit.co.kr/store/books/look.php?p_code=B2486465157

 

IT CookBook, 자바 프로그래밍 for Beginner

자바는 C 언어와 함께 모든 스포츠 선수가 필수로 갖춰야 할 ‘체력’과 같습니다. 체력이 좋은 선수는 어떤 종목을 선택하더라도 금방 적응해서 좋은 결과를 얻을 수 있듯이 자바에 익숙해진다

www.hanbit.co.kr