#include <stdio.h> #include <stdint.h> uint32_t set_baud_rate(uint32_t reg, uint8_t baud) { const uint8_t pos = 8; const uint8_t field = 4; uint32_t mask = ~(0xFFFFFFFF << field); // set width of mask according to field reg &= ~(mask << pos); // apply inverted mask to clear target bit in register uint32_t ext_baud = baud << pos; // coerce baud to 32-bet and shift on positon; reg |= ext_baud; // sum up shifted val and cleared register return reg; } int main() { uint32_t reg; uint8_t baud; scanf("%u %hhu", ®, &baud); printf("%u", set_baud_rate(reg, baud)); return 0; }
Test Cases
Test Results
Input
0 10
Expected Output
2560