코딩

챕터 2-4 : [심화] 비트 논리 연산자, 비트 이동 연산자

story98138 2026. 2. 24. 20:25

 

 

🗺️ 수업 목표

  • 비트 이동 연산자에 대해 배워본다.
  • sizeof 연산자에 대해 배워본다.

📜 목차

(목차 생략)


🏰 필수 프로그램 설치

  • Visual Studio 2022 혹은 Visual Studio 2026

⌨️ 모든 토글을 열고 닫는 단축키

  • Windows : Ctrl + alt + t
  • Mac : ⌘ + ⌥ + t

‼️ 주의사항

이번 단원은 “심화” 단원입니다. 프로그래밍이 처음이신 분들은 건너뛰셔도 좋습니다. 이 단원의 내용은 필수적인 것은 아닙니다.


📚 비트 연산자 (Bit-wise)

비트라는 말이 붙으면 피연산자를 모두 2진수로 평가한 후에 연산을 수행해야 합니다.

비트 논리 연산자 (Bit-wise Logical Operator)

비트별로 논리 연산을 수행하며, 곱/합/반전/베타합 등의 개념에 집중하면 이해가 빠릅니다.

  • 비트 논리 곱(&): 대응되는 비트가 모두 1이면 1.
  • 비트 논리 합(|): 대응되는 비트 중 하나라도 1이면 1.
  • 비트 논리 반전(~): 전체 비트를 반전시킴.
  • 비트 논리 베타합(^): 비트별로 1의 개수가 홀수개면 1, 짝수개면 0 (XOR).

💡 Ex020401) 비트 연산자 예제

C
 
int num1 = 11; // 1011(2)
int num2 = 9;  // 1001(2)

printf("%d\n", num1 & num2); // 1011 & 1001 -> 1001(2) -> 9
printf("%d\n", num1 | num2); // 1011 | 1001 -> 1011(2) -> 11
printf("%d\n", ~num1);       // ~(1011) -> 2의 보수 관계에 의해 -12 출력
printf("%d\n", num1 ^ num2); // 1011 ^ 1001 -> 0010(2) -> 2

📚 비트 이동 연산자 (Bit-Shift Operator)

피연산자를 2진수로 평가한 후, 비트를 왼쪽 혹은 오른쪽으로 $n$ 칸씩 이동시키는 연산자입니다.

Bit Left Shift Operator (<<)

이진 패턴을 왼쪽으로 $n$칸 이동시킵니다.

  • 예시: 7 << 2 $\rightarrow$ 0000 0111(2) << 2 $\rightarrow$ 0001 1100(2) $\rightarrow$ 28
  • 예시: 3 << 3 $\rightarrow$ 0000 0011(2) << 3 $\rightarrow$ 0001 1000(2) $\rightarrow$ 24

🤔 Tip: 비트를 왼쪽으로 $n$번 이동하는 것은 $2^n$을 곱한 것과 결과가 같습니다. 최신 컴파일러에서는 시프트 연산과 곱셈의 속도 차이가 거의 없으므로 최적화에 너무 매달릴 필요는 없습니다.

Bit Right Shift Operator (>>)

이진 패턴을 오른쪽으로 $n$칸 이동시킵니다.

  • 예시: 3 >> 1 $\rightarrow$ 0011(2) >> 1 $\rightarrow$ 0001(2) $\rightarrow$ 1
  • 예시: -4 >> 2 $\rightarrow$ 1111 1100(2) >> 2 $\rightarrow$ 1111 1111(2) $\rightarrow$ -1