#include <stdio.h> #include <stdint.h> uint8_t set_range(uint8_t reg, uint8_t start, uint8_t end) { uint8_t len = end-start+1; //Move it 1 past uint8_t ones = (1<<len) - 1; // This makes a mask: e.g 1000, then subtracting 1 == 0111 reg |= (ones<<start); //Set the bits return reg; } 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