비트 시프트 연산자란?
비트 시프트 연산자는 비트를 왼쪽 또는 오른쪽으로 이동시키는 연산자입니다.
- << (좌측 시프트): 비트를 왼쪽으로 이동시킵니다.
- >> (우측 시프트): 비트를 오른쪽으로 이동시킵니다.
각 이동은 곱하기 2 또는 나누기 2의 효과를 가집니다.
좌측 시프트 <<
✔️ 개념
- 비트를 왼쪽으로 n칸 이동
- 매 이동마다 2배씩 증가합니다.
- 오른쪽에는 0이 채워집니다.
✔️ 예시
int a = 3; // 00000011 (2진수)
int result = a << 1;
- 3 << 1 → 00000110 → 6
- 3 << 2 → 00001100 → 12
원리
- a << n 은 a × 2ⁿ 과 같습니다.
연산결과설명
3 << 1 | 6 | 3 × 2¹ |
3 << 2 | 12 | 3 × 2² |
5 << 3 | 40 | 5 × 2³ |
우측 시프트 >>
✔️ 개념
- 비트를 오른쪽으로 n칸 이동
- 매 이동마다 2로 나눈 값이 됩니다.
- 왼쪽에는 0 또는 부호 비트가 채워집니다 (부호 있는 정수의 경우 다를 수 있음).
✔️ 예시
int a = 8; // 00001000
int result = a >> 1;
- 8 >> 1 → 00000100 → 4
- 8 >> 2 → 00000010 → 2
원리
- a >> n 은 a ÷ 2ⁿ 과 같습니다.
연산결과설명
8 >> 1 | 4 | 8 ÷ 2¹ |
8 >> 2 | 2 | 8 ÷ 2² |
20 >> 2 | 5 | 20 ÷ 2² |
비트 시프트의 장점
- 곱하기나 나누기보다 속도가 훨씬 빠름
- 하드웨어 수준에서 직접 연산하므로 효율적
- 반복되는 2의 배수 또는 절반 계산에서 매우 유용
요약
연산자방향수학적 의미예시 (a=5)결과
<< | 왼쪽 | a × 2ⁿ | 5 << 1 | 10 |
>> | 오른쪽 | a ÷ 2ⁿ | 5 >> 1 | 2 |
'C' 카테고리의 다른 글
제어문 - for / 이중for문 (0) | 2025.06.12 |
---|---|
제어문 - if / switch문 (0) | 2025.06.11 |
비트 연산자 (0) | 2025.06.11 |
증/감 연산자 (0) | 2025.06.11 |
입출력 함수 (0) | 2025.06.11 |