본문 바로가기

Java/이론

[Java] Shift 연산자

어제 배웠던 연산자 외에도

 

옛날에 많이 쓰였던 연산자가 있습니다.

 

바로 Shift 연산자인데요.

 

Shift는 옮기다, 이동하다라는 의미로

 

다중 선택을 하기 위한 연산자입니다.

 

형태는 (십진수 << 정수) 의 형태이며

 

<< : 앞에 있는 수 (십진수)를 2진수로 바꾸고,

 

뒤에 있는 수(정수)만큼 왼쪽으로 밀라는 뜻입니다.

 

즉, 비어있는(오른쪽) 칸수를 0으로 채우고,

 

2진수를 다시 10진수로 바꾸는 것입니다.

 

예제를 봅시다.

 

어떤 거리에 여러 카페들이 있다고 가정하면

 

24시간 : 1 << 0 = 1

 

와이파이 : 1 << 1 = 2

 

흡연실 1 << 2 = 4

 

주차장 1 << 3 = 8

 

여기서 각각의 매장은 고유 번호를 갖습니다.

 

고유번호를 큰 값부터 차례대로 매칭해봅니다.

 

그러면 다음과 같은 옵션을 갖게 됩니다.

 

A매장 : 1 => 24시간

B매장 : 8 => 주차장 

C매장 : 13 => 주차장 + 흡연실 + 24시간

D매장 :6 => 흡연실 + 와이파이

 

 

그렇다면 (150 << 6) 의 출력은 어떻게 될까요?

 

150을 2진수로 바꾸면

 

1 0 0 1 0 1 1 0 라고 나오고 

 

여기에 0을 6개 붙여줍니다.

 

1 0 0 1 0 1 1 0 0 0 0 0 0 0

 

그러면 이렇게 표시할 수 있습니다.

 

이걸 다시 10진수로 바꾸면

 

`128 + 256 + 1024 + 8192 = 9600이 나옵니다.

 

잘 사용하지 않으니

 

이런게 있다 정도로 숙지하고 넘어가겠습니다!