#include void print_binary(unsigned int number) { for(int i = 7; i >= 0; --i) { putchar('0' + ((number >> i) & 1)); if(i % 4 == 0 && i != 0) putchar(' '); } putchar('\n'); } int main() { unsigned int num = 64; // 0100 0000 int pos = 3; int n = 2; unsigned int expected_result = 92; // 0101 1100 printf("Initial number: "); print_binary(num); printf("\nExpected result: "); print_binary(expected_result); printf("\n---- Mask 1 ----\n"); unsigned int mask1 = (1 << n) - 1; printf("(1 << n) - 1: "); print_binary(mask1); mask1 <<= pos; printf("<< pos: "); print_binary(mask1); unsigned int result1 = num | mask1; printf("Result 1: "); print_binary(result1); printf("\n---- Mask 2 ----\n"); unsigned int mask2 = (1 << n) - 1; printf("(1 << n) - 1: "); print_binary(mask2); mask2 <<= (pos - n + 1); printf("<< (pos - n + 1): "); print_binary(mask2); unsigned int result2 = num | mask2; printf("Result 2: "); print_binary(result2); return 0; }