🗺️ 수업 목표
- 비트 이동 연산자에 대해 배워본다.
- 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
'코딩' 카테고리의 다른 글
| CH2 개인과제 1번 상태창 구현(2) (0) | 2026.03.05 |
|---|---|
| CH2 개인과제 1번 상태창 구현(1) (0) | 2026.03.04 |
| 챕터 2-3 : 형변환 연산자, 삼항 연산자, sizeof (0) | 2026.02.24 |
| 챕터 2-2 : 증감 연산자, 논리 연산자, 비교 연산자 (0) | 2026.02.24 |
| 챕터 2-1 : 연산자와 피연산자, 산술 연산자, 복합 대입 연산자, 값식문 (0) | 2026.02.24 |