#include <stdio.h> #include <stdint.h> uint32_t CLEAR_BIT(uint32_t reg,uint32_t pos,uint32_t len) { uint32_t mask=(((1u<<len)-1)<<pos); reg&=(~mask); return reg; } uint32_t update_register(uint32_t reg) { // Your logic here uint32_t mask =(0x1F<<10); mask&=reg; mask>>=10; if(mask<31) { mask++; mask<<=10; reg=CLEAR_BIT(reg,10,5); reg|=mask; } 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