본문 바로가기
프로젝트 개발 기록/[개발] java | spring

[Java] 비트연산자(bitwise operator) "& | ^ ~ << >>"

by HelloJudy 2022. 7. 19.

 

비트 연산자는 피연산자를 비트단위로 논리 연산한다.

 

  • 비트 연산의 우선순위: 논리 연산 < 비트 연산 < 비교 연산

 

1. | (OR), &(AND, ^(XOR)

| (OR 연산자): 피연산자 중 한 쪽의 값이 1이면, 1을 결과로 얻는다. 그 외는 0을 얻는다.
& (AND 연산자): 피연산자 양 쪽이 모두 1이어야만 1을 결과로 얻는다. 그 외는 0을 얻는다.
^ (XOR 연산자): 피연산자의 값이 서로 다를 때만 1을 결과로 얻는다. 같을 때는 0을 얻는다.

 

출처: TCP school
출처: TCP school
출처: TCP school

 

2. ~ (Not, 비트 전환 연산자)

피연산자를 2진수로 표현했을 때, 0은 1로, 1은 0으로 바꾼다.

 

ex) 10진수 10을 비트전환 연산한 결과는 -11이 된다. 이 값은 10의 '1의 보수'이다.

 

출처: TCP school

 

3. << >> (쉬프트 연산자)

 

ex) 7 << 2 는 왼쪽 피연산자인 10진수 7의 2진수를 2자리 이동한다.

이 때, 자리이동으로 저장범위를 벗어난 값들은 버려지고 빈자리는 0으로 채워진다.

 

출처: TCP school

  • >> 연산자

-  부호있는 정수는 부호 유지를 위해서 왼쪽 피연산자가 음수인 경우 빈자리를 1로 채운다. 

x << n은 x  * 2^n(제곱) 의 결과와 같다.
x >> n은 x / 2^n(제곱) 의 결과와 같다.

 

출처: TCP school

 

 


📌 Reference

  • 남궁 선, 「자바의 정석」, 도우출판, 2018, p121~129
  • TCP SCHOOL.com

 

반응형

댓글