#include <stdio.h> #include <stdint.h> uint8_t set_range(uint8_t reg, uint8_t start, uint8_t end) { // 1. Calculate the number of bits to set // 2. Create a mask: (1 << count) - 1 creates 'count' number of 1s // 3. Shift the mask to the 'start' position uint8_t mask = ((1 << (end - start + 1)) - 1) << start; // 4. Combine with original register using OR return reg | mask; } int main() { uint8_t reg, start, end; // Using %hhu for unsigned char (8-bit integer) input if (scanf("%hhu %hhu %hhu", ®, &start, &end) == 3) { printf("%u\n", set_range(reg, start, end)); } return 0; }
Test Cases
Test Results
Input
0 1 3
Expected Output
14