#include <stdio.h> #include <stdint.h> uint8_t set_range(uint8_t reg, uint8_t start, uint8_t end) { for (int i = start; i < end + 1; i++) { reg |= (1 << i); } return reg; // uint8_t mask = ((1 << (end - start + 1)) - 1) << start; // (end - start +1) => (3 - 1 + 1) = 3 // (1 << 3) = 0b1000 // 0b1000 - 1 = 0b0111 // 0b0111 << start => 0b0111 << 1 = 0b1110 // return reg | mask; } int main() { uint8_t reg, start, end; scanf("%hhu %hhu %hhu", ®, &start, &end); printf("%u", set_range(reg, start, end)); return 0; }
Test Cases
Test Results
Input
0 1 3
Expected Output
14