#include <stdio.h> #include <stdint.h> uint32_t update_register(uint32_t reg) { // Your logic here //1. Extraction uint32_t Bf=0; /*for (int i=10;i<15;i++){ Bf = Bf | ((reg & (1U<<i))>>(i-10)); } */ for (int i = 0; i < 5; i++) { if (reg & (1U << (10 + i))) { Bf |= (1U << i); } } if (Bf<31){ Bf=Bf+1; } reg&=(~(0x1FU<<10)); reg|=(Bf<<10); 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