ex) var1 << 3 // var1 의 비트를 왼쪽으로 3번 이동.
ex) var1 >> 3 // var1 의 비트를 오른쪽으로 3번 이동.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <limits.h>
#include <stdbool.h>
void char_to_binary(const char uc)
{
const int bits = CHAR_BIT * sizeof(unsigned char);
for (int i = bits - 1; i >= 0; i--)
printf("%d", (uc >> i) & 1);
}
void print_binary(char* data, int bytes)
{
for (int i = 0; i < bytes; ++i)
char_to_binary(data[i]);
printf("\n");
}
int main()
{
struct items {
bool has_sword : 1; // 해당 멤버에 1 비트 할당 및 bool처럼 사용.
bool has_shield : 1; // ''
bool has_potion : 1; // ''
bool has_guntlet : 1; // ''
bool has_hammer : 1; // ''
bool has_key : 1; // ''
bool has_ring : 1; // ''
bool has_amulet : 1; // ''
} items_flag;
items_flag.has_sword = 1;
items_flag.has_shield = 1;
items_flag.has_potion = 0;
items_flag.has_guntlet = 1;
items_flag.has_hammer = 0;
items_flag.has_key = 0;
items_flag.has_ring = 0;
items_flag.has_amulet = 0;
printf("Size = %zd\n", sizeof(items_flag)); // 구조체의 크기 출력.
print_binary((char*)&items_flag, sizeof(items_flag)); // 구조체의 2진수 출력.
return 0;
}
🚩 출처 및 참고자료 : 홍정모의 따라하며 배우는 C 언어 (따배씨)