카테고리 없음

[도서/자바의 신] 부록 #4 비트 연산자는 어떤 것일까

yulee_to 2022. 12. 27. 21:47

자바의 신

✔️이 글은 [자바의 신 - 이상민 지음] 도서를 바탕으로 정리한 글입니다. 


bit와 byte에 대해 다시 한번 살펴보자

컴퓨터는 기본적으로 0과 1로 처리된다.

0과 1을 나타내는 것을 1bit라 하고 8개가 모여 1byte가 된다. 

1byte로는 2x2x2x2x2x2x2x2가지의 표현이 가능해 총 256가지가 된다.

8비트를 4자리씩 끊으면 4비트 2개로 16진수 2개로 1바이트를 표현할 수 있다.

비트 연산자라는 것들은 뭘까?

CPU의 성능이 아주 느린 장비에 들어가는 프로그램을 작성하건, 암호화 작업과 관련된 작업을 할 때 아주 조금이라도 메모리를 줄이고 성능을 개선하기 위해서 비트 연산이 필요한 경우가 있다.

두 개의 숫자를 비교하는 비트 연산자들

  • & : AND 연산
  • | : OR 연산 (inclusive OR 연산이라고도 부름)
  • ^ : XOR 연산 (exclusive OR 연산이라고도 부름)

비트 연산자 중 유일한 단항 연산자는 하나다

  • ~ : unary 연산 (NOT 연산이라고도 부름)

음수가 표현된 2진수를 unary 연산자로 모든 비트를 바꾼 후 1을 더하면 동일한 값을 갖는 양수가 된다. 

반대로, 양수로 표현된 2진수를 unary 연산자로 모든 비트를 바꾼 후 1을 더하면 동일한 절대값을 갖는 음수가 된다.

 

비트 위치를 이동하는 연산자를 살펴보자

  • << : 왼쪽 이동
  • >> : 오른쪽 이동
  • >>> : 부호 상관 없는 (unsigned) 오른쪽 이동

<<은 비트값들은 왼쪽으로 한칸 씩 옮긴 후 빈 공간에 0을 채워준다.

>>은 비트값들을 오른쪽으로 한칸 씩 옮긴 후 빈 공간에 양수는 0을 채워주고 음수는 1을 채워준다.

>>>은 부호 값을 신경쓰지 않는 연산자로 음수인 경우에도 오른쪽으로 비트를 옮긴 후 0을 채워준다.

간략하게 비트 연산 수행하기

비트 연산자들도 &=, |= 처럼 간단하게 연산이 가능하다.

~은 단항 연산자라 간략화된 연산자 사용이 불가능하다. 

 

728x90