#include <stdio.h> #include <stdint.h> #define MASK(width, pos) (((1<<width)-1) << pos) uint8_t set_range(uint8_t reg, uint8_t start, uint8_t end) { // Aproach 1: // for (int i =start; i <= end; i++){ // reg |= (1U << i); // } //Aproach 2: int width = (end - start)+1; //include of endpoints reg |= MASK(width, start); 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