#include <stdio.h> #include <stdint.h> #define IS_BIT_SET(REG, POS) ((REG) & (1 << POS)) #define FLAG0 "Power On" #define FLAG1 "Error" #define FLAG2 "Tx Ready" #define FLAG3 "Rx Ready" #define FLAG4 "Overheat" #define FLAG5 "Undervoltage" #define FLAG6 "Timeout" #define FLAG7 "Reserved" void decode_status(uint8_t status_reg) { for(uint8_t i = 0; i < 8; i++){ if(IS_BIT_SET(status_reg, i)){ if(i == 0) printf("%s\n", FLAG0); else if(i == 1) printf("%s\n", FLAG1); else if(i == 2) printf("%s\n", FLAG2); else if(i == 3) printf("%s\n", FLAG3); else if(i == 4) printf("%s\n", FLAG4); else if(i == 5) printf("%s\n", FLAG5); else if(i == 6) printf("%s\n", FLAG6); else if(i == 7) printf("%s\n", FLAG7); } } } int main() { uint8_t reg; scanf("%hhu", ®); decode_status(reg); return 0; }
Solving Approach
Test Cases
Test Results
Input
13
Expected Output
Power On Tx Ready Rx Ready