#include <stdio.h> #include <stdint.h> // Define macros here #define WRITE_ENABLE(status, b) (status ^= (b)) #define WRITE_MODE(status, b) (status ^= (b<<1)) #define WRITE_SPEED(status, b) (status ^= (b<<3)) #define READ_ENABLE(status) (status%(1<<1)) #define READ_MODE(status) ((status>>1)%(1U<<2)) #define READ_SPEED(status) ((status>>3)%(1U<<3)) uint16_t build_register(uint8_t enable, uint8_t mode, uint8_t speed) { // Use macros to set fields uint16_t tmp = 0; WRITE_ENABLE(tmp, enable); WRITE_MODE(tmp, mode); WRITE_SPEED(tmp, speed); return (tmp); } 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