#include <stdio.h>
#define GetBit(num, bit) ((num & (1 << bit)) != 0)
#define SetBit(num, bit) (num |= (1 << bit))
#define FlipBit(num, bit) (num ^= (1 << bit))
#define ClearBit(num, bit) (num &= ~(1 << bit))
void print_bits(unsigned int num, unsigned int size) {
for (int i = 1 << (size - 1); i > 0; i = i / 2) {
(num & i) ? printf("1") : printf("0");
}
}
int main() {
unsigned int num = 0;
SetBit(num, 3);
print_bits(num, 8);
printf("\n");
(GetBit(num, 5)) ? printf("1") : printf("0");
printf("\n");
(GetBit(num, 3)) ? printf("1") : printf("0");
FlipBit(num, 5);
printf("\n");
print_bits(num, 8);
ClearBit(num, 3);
printf("\n");
print_bits(num, 8);
return 0;
}
/*
run:
00001000
0
1
00101000
00100000
*/