#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;
}
Input
1 2 4
Expected Output
37