#include <stdio.h>
#include <stdint.h>
typedef union{
uint32_t Reg;
struct{
uint32_t x : 10;
uint32_t target : 5;
uint32_t y : 16;
};
}Field;
uint32_t update_register(uint32_t reg) {
// Field check;
// check.Reg = reg;
// if(check.target < 31 ){
// check.target++;
// }
// return check.Reg;
uint32_t field = (reg >> 10 & (0x1F)); // Extract field
if (field < 31) {
field ++; // Increment
}
reg &= ~(0x1F << 10); // Clear bits 10–14
reg |= (field << 10); // Write updated field
return reg;
}
int main() {
uint32_t reg;
scanf("%u", ®);
uint32_t updated = update_register(reg);
printf("%u", updated);
return 0;
}
Input
15360
Expected Output
16384