비트연산자

비트 연산연습 1 :기본 연산자

토픽 비트연산자
/*
 * 비트 연산 연습 : 기본 연산자
 *
 * 학습 목표:
 * - AND(&), OR(|), XOR(^), NOT(~) 연산 이해
 * - 2진수로 결과 확인하기
 */


#include <stdio.h>

// 8비트 2진수로 출력하는 함수
void printBinary(unsigned char num)
{
    for (int i = 7; i >= 0; i--)
    {
        if (num & (1 << i))
            printf("1");
        else
            printf("0");
    }
}

int main(void)
{
    unsigned char a = 12;  // 00001100
    unsigned char b = 10;  // 00001010
    unsigned char result;

    printf("=====================================\n");
    printf("       비트 연산 기본 연습\n");
    printf("=====================================\n\n");

    // 입력값 출력
    printf("a = %3d = ", a);
    printBinary(a);
    printf("\n");

    printf("b = %3d = ", b);
    printBinary(b);
    printf("\n\n");

    // AND 연산
    printf("----- AND 연산 (둘 다 1이면 1) -----\n");
    result = a & b;
    printf("a & b = %3d = ", result);
    printBinary(result);
    printf("\n\n");

    // OR 연산
    printf("----- OR 연산 (하나라도 1이면 1) -----\n");
    result = a | b;
    printf("a | b = %3d = ", result);
    printBinary(result);
    printf("\n\n");

    // XOR 연산
    printf("----- XOR 연산 (서로 다르면 1) -----\n");
    result = a ^ b;
    printf("a ^ b = %3d = ", result);
    printBinary(result);
    printf("\n\n");

    // NOT 연산
    printf("----- NOT 연산 (비트 반전) -----\n");
    result = ~a;
    printf("~a    = %3d = ", result);
    printBinary(result);
    printf("\n\n");

    printf("=====================================\n");
    printf("직접 해보기: a와 b 값을 바꿔서 실행해보세요!\n");
    printf("=====================================\n");

    return 0;
}

 

댓글

댓글 본문