Back
Syntax
Study
Editor
Mode:
HTML
CSS
JavaScript
PHP
Reset
Run »
HTML / CSS / JS
#include <stdio.h> /* Define flag bits using left-shift */ #define FLAG_READ (1 << 0) /* bit 0: 0000 0001 */ #define FLAG_WRITE (1 << 1) /* bit 1: 0000 0010 */ #define FLAG_EXEC (1 << 2) /* bit 2: 0000 0100 */ void print_binary(unsigned int n) { for (int i = 7; i >= 0; i--) putchar((n >> i) & 1 ? '1' : '0'); putchar(' '); } int main(void) { unsigned int a = 0b00001100; /* 12 */ unsigned int b = 0b00001010; /* 10 */ printf("a & b = %u -> ", a & b); print_binary(a & b); /* 8 */ printf("a | b = %u -> ", a | b); print_binary(a | b); /* 14 */ printf("a ^ b = %u -> ", a ^ b); print_binary(a ^ b); /* 6 */ printf("~a = %u -> ", ~a & 0xFF); print_binary(~a & 0xFF); printf("a << 2 = %u -> ", a << 2); print_binary(a << 2); /* 48 */ printf("a >> 1 = %u -> ", a >> 1); print_binary(a >> 1); /* 6 */ /* Flags example */ unsigned int perms = FLAG_READ | FLAG_WRITE; printf(" Read? %s ", (perms & FLAG_READ) ? "yes" : "no"); printf("Write? %s ", (perms & FLAG_WRITE) ? "yes" : "no"); printf("Exec? %s ", (perms & FLAG_EXEC) ? "yes" : "no"); perms |= FLAG_EXEC; /* set exec bit */ perms &= ~FLAG_WRITE; /* clear write bit */ printf("After update — Write? %s Exec? %s ", (perms & FLAG_WRITE) ? "yes" : "no", (perms & FLAG_EXEC) ? "yes" : "no"); return 0; }
Result
Open