안녕하세요, 이번 주부터 고급 C 프로그래밍 과정을 함께 시작하게 되었습니다.
오늘은 그 첫 번째 시간으로 비트 연산자와 **열거형(enum)**에 대해 배워보겠습니다.
이 두 가지는 실무에서 권한 설정, 하드웨어 제어, 상태 표시 등에 굉장히 많이 쓰이는 기능이에요. 처음엔 조금 낯설 수 있지만, 한 번 익혀두면 정말 강력한 도구가 됩니다.
1. 비트 연산자는 언제 쓰는 걸까요?
우리가 평소에 쓰는 정수는 사실 이진수로 표현되어 있어요. 예를 들어 5는 0101, 3은 0011 이렇게요. 이 숫자들을 비트 단위로 직접 다루는 것이 바로 비트 연산이에요.
대표적인 비트 연산자들
연산자 이름 설명 예시
& | AND | 둘 다 1일 때만 1 | 5 & 3 = 1 |
` | ` | OR | 하나라도 1이면 1 |
^ | XOR | 다를 때만 1 | 5 ^ 3 = 6 |
~ | NOT | 비트 반전 | ~5 = -6 (2의 보수로 계산됨) |
예제를 통해 하나씩 살펴보면, 이해가 쏙쏙 들어올 거예요.
2. 열거형(enum)이란?
여러분이 어떤 상태를 표현할 때, 숫자나 문자열 대신 의미 있는 이름을 쓰면 코드가 훨씬 읽기 쉬워지겠죠?
바로 그걸 도와주는 게 **열거형(enum)**이에요.
enum Color { RED, GREEN, BLUE };
이렇게 선언해두면 RED는 0, GREEN은 1, BLUE는 2로 자동으로 설정됩니다.
필요하다면 이렇게 직접 값도 지정할 수 있어요:
enum Permission { NONE = 0, READ = 1, WRITE = 2, EXEC = 4 };
3. 비트 연산자 + enum = 권한 시스템 만들기!
자, 그럼 지금까지 배운 내용을 가지고 사용자 권한 시스템을 만들어볼까요?
예제 코드
#include <stdio.h>
#define READ 0x1 // 0001
#define WRITE 0x2 // 0010
#define EXEC 0x4 // 0100
enum Permission {
NONE = 0,
READ_ONLY = READ,
WRITE_ONLY = WRITE,
EXEC_ONLY = EXEC,
READ_WRITE = READ | WRITE
};
int main() {
int permission = READ | EXEC;
if (permission & READ) printf("읽기 권한 있음\n");
if (permission & WRITE) printf("쓰기 권한 있음\n");
if (permission & EXEC) printf("실행 권한 있음\n");
}
위 코드를 보면, 사용자의 권한을 비트 조합으로 표현해서 어떤 권한이 있는지를 쉽게 체크할 수 있습니다.
4. 오늘의 과제 🎯
여러분이 직접 비트 연산자와 열거형을 활용한 간단한 권한 시스템을 구현해보세요!
과제 내용
- enum과 define을 이용해 최소 3가지 이상의 권한을 정의하세요.
- 사용자에게 권한을 추가하고 제거하는 기능을 만들어보세요.
- 최종적으로 사용자가 어떤 권한을 가지고 있는지 출력하도록 해주세요.
이 과제를 통해 오늘 배운 내용을 완전히 자기 것으로 만들 수 있습니다!
정리하며
오늘은 다음과 같은 내용을 배웠어요:
- 비트 연산자의 종류와 특징
- 열거형(enum)의 기본 개념과 활용
- 두 개념을 조합해서 권한 시스템 구현하기
다음 시간에는 #define, #include, 그리고 조건부 컴파일 같은 전처리기 지시문에 대해 배울 거예요. 코드를 효율적으로 관리하는 방법을 익히게 될 테니 꼭 함께해 주세요!
'C언어 > C언어 고급' 카테고리의 다른 글
고급2강_C언어 기초 독학 전처리기 지시문 완전 정복 (0) | 2025.04.22 |
---|---|
고급8강_C언어 기초 독학 프로젝트 발표 & 코드 리뷰 (0) | 2025.04.22 |
고급7강_C언어 기초 독학 실전 프로젝트 제작 (0) | 2025.04.22 |
고급6강_C언어 기초 독학 프로젝트 설계 및 역할 분담 (0) | 2025.04.22 |
고급5강_C언어 기초 독학 디버깅 기법 완전 정복 (0) | 2025.04.22 |