#include <stdio.h> #include <stdint.h> uint16_t pack_register(uint8_t mode, uint8_t speed, uint8_t status) { // Your logic here uint16_t num = 0x0; for(int i=0;i<15;i++){ if(i == 0){ num = num | (mode << i); } else if(i == 3){ num |= (speed << i); } else if(i == 8 || i == 9){ num |= (0 << i); } else if(i == 10){ num |= (status << i); } } return num; } int main() { uint8_t mode, speed, status; scanf("%hhu %hhu %hhu", &mode, &speed, &status); uint16_t reg = pack_register(mode, speed, status); printf("%u", reg); return 0; }
Test Cases
Test Results
Input
3 10 12
Expected Output
12371