#include <stdio.h> #include <stdint.h> uint32_t update_register(uint32_t reg) { uint32_t pos = 10; uint32_t len = 5; uint32_t mask = (1U<<len)-1; // for lsb 1111 uint32_t result = (reg>>pos) & mask; // did the first extraction if(result<31){ result++; } reg &= ~(mask<<pos); // clear bit field reg |= (result<<pos); // final set bit return reg; } int main() { uint32_t reg; scanf("%u", ®); uint32_t updated = update_register(reg); printf("%u", updated); return 0; }
Test Cases
Test Results
Input
15360
Expected Output
16384