Java/이론
[Java] Shift 연산자
Puft
2024. 11. 22. 09:36
어제 배웠던 연산자 외에도
옛날에 많이 쓰였던 연산자가 있습니다.
바로 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이 나옵니다.
잘 사용하지 않으니
이런게 있다 정도로 숙지하고 넘어가겠습니다!