더북(TheBook)

세부적인 예제 코드는 다음과 같습니다. 코드를 하나하나 보면서 어떻게 동작하는지 이해해 보세요.

room_onoff2.c

#include <stdio.h>
 
main() {
    char room = 0;
    int i, j;
 
    printf("2번 방과 7번 방의 불을 on합니다.\n\n");
 
    room |= 2;     // 0000 0010 마스크와 비트 OR 연산으로 두 번째 비트를 켬
    room |= 64;    // 0100 0000 마스크와 비트 OR 연산으로 일곱 번째 비트를 켬
 
    if (room & 1)  // & 연산자로 0000 0001 비트가 켜져 있는지 확인
        printf("1번 방은 켜져(on) 있습니다.\n");
    else
        printf("1번 방은 꺼져(off) 있습니다.\n");
 
    if (room & 2)  // & 연산자로 0000 0010 비트가 켜져 있는지 확인, 2번 방 확인
        printf("2번 방은 켜져(on) 있습니다.\n");
    else
        printf("2번 방은 꺼져(off) 있습니다.\n");
 
    if (room & 64) // & 연산자로 0100 0000 비트가 켜져 있는지 확인, 7번 방 확인
        printf("7번 방은 켜져(on) 있습니다.\n");
    else
        printf("7번 방은 꺼져(off) 있습니다.\n");
    printf("\n");
 
    printf("2번 방의 불을 끄겠습니다\n");
    room &= ~2;    // 2번 방의 비트를 1 -> 0으로 반전하고 & 연산
 
    if (room & 2)  // & 연산자로 0000 0010 비트가 켜져 있는지 확인
        printf("2번 방은 켜져(on) 있습니다.\n");
    else
        printf("2번 방은 꺼져(off) 있습니다.\n");
    printf("\n");
    printf("1번 방이 켜져 있다면 끄고 꺼져 있다면 켜겠습니다\n");
 
    room ^= 1;
 
    if (room & 1) // & 연산자로 0000 0001 비트가 켜져 있는지 확인
        printf("1번 방은 켜져(on) 있습니다.\n");
    else
        printf("1번 방은 꺼져(off) 있습니다.\n");
    printf("\n");
 
    printf("현재 모든 방의 점등 상태를 확인하겠습니다!\n");
 
    for (i = 1, j = 1; i <= 128; i = i * 2, j++) {
        if (room & i)
            printf("%d번 방은 켜져(on) 있습니다.\n", j);
        else
            printf("%d번 방은 꺼져(off) 있습니다.\n", j);
    }
}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.