#include <stdio.h> #include <stdint.h> // Define macros here #define ENABLE_BITS(reg, enable) (reg |= ((enable&0x01)<<0)) #define MODE_BITS(reg, mode) (reg |= ((mode&0x0B)<<1)) #define SPEED_BITS(reg, speed) (reg |= ((speed&0x6F)<<3)) uint16_t build_register(uint8_t enable, uint8_t mode, uint8_t speed) { // Use macros to set fields uint16_t output = 0x00; ENABLE_BITS(output, enable); MODE_BITS(output,mode); SPEED_BITS(output, speed); return output; } int main() { uint8_t enable, mode, speed; scanf("%hhu %hhu %hhu", &enable, &mode, &speed); uint16_t reg = build_register(enable, mode, speed); printf("%u", reg); return 0; }
Test Cases
Test Results
Input
1 2 4
Expected Output
37