C

이동 연산자

1space 2025. 6. 11. 02:42

비트 시프트 연산자란?

비트 시프트 연산자는 비트를 왼쪽 또는 오른쪽으로 이동시키는 연산자입니다.

  • << (좌측 시프트): 비트를 왼쪽으로 이동시킵니다.
  • >> (우측 시프트): 비트를 오른쪽으로 이동시킵니다.

각 이동은 곱하기 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