/*
* 비트 연산 연습 : 기본 연산자
*
* 학습 목표:
* - 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;
}