#include <stdio.h>
#include <stdint.h>
#define len 4
#define pos ((1U << (((11 - 8) + 1)) - 1))
uint32_t set_baud_rate(uint32_t reg, uint8_t baud) {
// Your code here
uint32_t mask = (1U << len) - 1;
reg &= ~(mask << pos);
reg |= (baud & mask)<<pos;
return reg;
}
int main() {
uint32_t reg;
uint8_t baud;
scanf("%u %hhu", ®, &baud);
printf("%u", set_baud_rate(reg, baud));
return 0;
}
/*
#include <stdio.h>
#include <stdint.h>
#define BAUD_POS 8 // starting bit position
#define BAUD_LEN 4 // field width
uint32_t set_baud_rate(uint32_t reg, uint8_t baud) {
uint32_t mask = (1U << BAUD_LEN) - 1; // 0b1111
reg &= ~(mask << BAUD_POS); // clear bits [11:8]
reg |= (baud & mask) << BAUD_POS; // set new baud value
return reg;
}
int main() {
uint32_t reg;
uint8_t baud;
scanf("%u %hhu", ®, &baud);
printf("%u", set_baud_rate(reg, baud));
return 0;
}
*/
Input
0 10
Expected Output
2560