Mingyu Kim

비트 이동 연산자

1. 종류

연산자 이름 설명 연산 효과
<< 좌측 쉬프트 비트를 왼쪽으로 이동. 빈자리는 0으로 채움 $x \times 2^n$
>> 우측 쉬프트 비트를 오른쪽으로 이동. 빈자리는 부호 비트로 채움 $x / 2^n$
>>> 논리 우측 쉬프트 비트를 오른쪽으로 이동. 빈자리는 무조건 0으로 채움 (양수만 처리 시 유용)

2. 좌측 쉬프트 (a << b)

a의 비트를 b만큼 왼쪽으로 이동. 오른쪽 끝의 빈자리는 모두 0으로 채운다. 범위를 벗어나는 왼쪽 비트들은 버려진다.

3. 우측 쉬프트 (a >> b)

a의 비트를 b만큼 오른쪽으로 이동. 왼쪽 빈자리를 부호 비트(MSB)와 동일한 값으로 채운다. (양수 0, 음수 1)

4. 논리 우측 쉬프트 (a >>> b)

>>와 비슷하지만, 부호 비트와 상관없이 무조건 빈자리를 0으로 채운다. 이 연산을 수행하면 결과는 항상 양수가 된다.

4. 사용 사례

성능 최적화

비트 쉬프트는 단순히 자리를 옮기는 것이라 곱셈, 나눗셈 연산이 압도적으로 빠르다.

대량의 연산이 필요한 그래픽 엔진이나 암호화 알고리즘에서 $2$의 배수를 곱하거나 나눌 때 사용한다.

int value = 100;
int result1 = value << 3; // 100 * 8 = 800
int result2 = value >> 2; // 100 / 4 = 25

주의할 점

5. 요약 및 체크포인트