본문 바로가기

Java

비트 연산자

1. bit와 byte

 

- 컴퓨터는 전자기기임. 즉, 모든 작업을 할 때 전기가 필요함

-> 그런데, 어떻게 전기로 이러한 작업들이 가능할까?

 

- 가장 쉽게 생각하려면 전구를 생각하면 됨 

-> 불이 꺼져 있거나 불이 켜져 있거나

-> 컴퓨터는 이러한 단순한 이론에서 시작되어 만들어졌고,

    이 기본 사항은 아직 바뀌지 않음

 

- 즉, 기본적인 처리는 0과 1, 꺼져 있는 것과 켜져 있는 것으로 나뉨

-> 1 bit라는 것은 0과 1로 표시할 수 있는 하나의 단위임

-> 그리고 8 bit는 1 byte가 됨

 

- 8비트로 나타낼 수 있는 수는 8칸의 공간이 있고,  

  0과 1로 표현이 가능하기 때문에 2x2x2x2x2x2x2x2 = 256가지의 표현이 가능함

-> 여기서 8비트를 4자리씩 끊으면 4비트 두 개로 표현할 수 있고,

    각 4자리는 16진수로 표현이 가능하기 때문에

    16진수 두 개로 8비트, 즉 1바이트를 표현할 수 있음 

 

 

2. 비트 연산자란?

 

- 자바에서 제공되는 비트 연산을 처리하는 연산자에는

  크게 두 개의 숫자를 비교하는 bitwise 연산자와 비트를 이동하는 bit shift 연산자가 있음

 

- 먼저 bitwise 연산자를 살펴봄

   (1) & : AND 연산

   (2)  |  : OR 연산

   (3) ^  : XOR 연산

a   = 00000001
b   = 00000111
a&b = 00000001

a   = 00000001
b   = 00000111
a|b = 00000111

a   = 00000001
b   = 00000111
a^b = 00000110

- 추가로, 숫자가 하나만 있어도 되는 연산자가 있음

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

a   = 00000001
~a  = 11111110

- 마지막으로, bit shift 연산에는 다음과 같은 것들이 제공됨

   (1) << : 왼쪽 이동

   (2) >> : 오른쪽 이동

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

a     = 00000001
a<<1  = 00000010

a     = 10000000
a<<1  = 00000000

a     = 00000010
a>>1  = 00000001

a     = 00000001
a>>1  = 00000000

a     = 00000010
a>>>1  = 00000001

a     = 00000001
a>>>1  = 00000000

 

참고

- 자바의 신 

'Java' 카테고리의 다른 글

제네릭 프로그래밍  (0) 2022.05.20
Wrapper 클래스  (0) 2022.05.20
String 클래스  (0) 2022.05.20
equals()와 hashcode()  (0) 2022.05.20
JVM  (0) 2022.05.20