#include <stdio.h>
#include <stdint.h>
void print_bits(uint8_t n) {
for (int i = 7; i >= 0; i--) {
printf("%d", (n >> i) & 1);
}
}
int main() {
uint8_t a = 13; // 00001101
uint8_t b = 10; // 00001010
uint8_t and_result = a & b; // bitwise AND
uint8_t or_result = a | b; // bitwise OR
uint8_t xor_result = a ^ b; // bitwise XOR
uint8_t not_result = ~a; // bitwise NOT
uint8_t left_shift = a << 1; // left shift by 1
uint8_t right_shift = a >> 2; // right shift by 2
printf("a = "); print_bits(a); printf(" (%d)\n", a);
printf("b = "); print_bits(b); printf(" (%d)\n", b);
printf("a AND b = "); print_bits(and_result); printf(" (%d)\n", and_result);
printf("a OR b = "); print_bits(or_result); printf(" (%d)\n", or_result);
printf("a XOR b = "); print_bits(xor_result); printf(" (%d)\n", xor_result);
printf("NOT a = "); print_bits(not_result); printf(" (%d)\n", not_result);
printf("a << 1 = "); print_bits(left_shift); printf(" (%d)\n", left_shift);
printf("a >> 2 = "); print_bits(right_shift); printf(" (%d)\n", right_shift);
return 0;
}uint8_t and_result = a & b;
compute bitwise AND to keep bits on only if both a and b have them on
uint8_t or_result = a | b;
compute bitwise OR to turn bits on if either a or b has them on
uint8_t xor_result = a ^ b;
compute bitwise XOR to turn bits on only if bits differ
compute bitwise NOT to flip every bit
uint8_t left_shift = a << 1;
left shift bits by 1 to multiply by 2
uint8_t right_shift = a >> 2;
right shift bits by 2 to divide by 4
a = 00001101 (13)
b = 00001010 (10)
a AND b = 00001000 (8)
a OR b = 00001111 (15)
a XOR b = 00000111 (7)
NOT a = 11110010 (242)
a << 1 = 00011010 (26)
a >> 2 = 00000011 (3)