Code
c
#include <stdio.h>
#include <stdint.h>
int main(void) {
uint32_t flags = 0;
#define FLAG_READ (1u << 0)
#define FLAG_WRITE (1u << 1)
#define FLAG_EXEC (1u << 2)
flags |= FLAG_READ | FLAG_WRITE; // set
printf("flags = 0x%x\n", flags);
flags &= ~FLAG_WRITE; // clear
printf("flags = 0x%x\n", flags);
int can_read = (flags & FLAG_READ) != 0;
printf("can_read = %d\n", can_read);
// Toggle
flags ^= FLAG_EXEC;
printf("flags = 0x%x\n", flags);
// Shift and mask nibbles
uint32_t v = 0xDEADBEEF;
printf("nibble = 0x%x\n", (v >> 8) & 0xF);
// Population count of a byte
uint8_t b = 0b10110101;
int count = __builtin_popcount(b);
printf("popcount = %d\n", count);
return 0;
}