본문 바로가기
C언어/C언어 고급

고급1강_C언어 기초 독학 비트 연산자와 열거형(enum) 완전 정복!

by AI쌤 2025. 4. 23.
반응형

안녕하세요, 이번 주부터 고급 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, 그리고 조건부 컴파일 같은 전처리기 지시문에 대해 배울 거예요. 코드를 효율적으로 관리하는 방법을 익히게 될 테니 꼭 함께해 주세요!

반응형