#include <stdio.h> #include <stdint.h> const char *flag_names[8]={ "Power On", "Error", "Tx Ready", "Rx Ready", "Overheat", "Undervoltage", "Timeout", "Reserved" }; void decode_status(uint8_t status_reg) { for (int i=0;status_reg>0;i++) { if (status_reg & 0x01) printf("%s\n",flag_names[i]); status_reg>>=1; } /* if(status_reg & (1<<0)) printf("Power On\n"); if(status_reg & (1<<1)) printf("Error\n"); if(status_reg & (1<<2)) printf("Tx Ready\n"); if(status_reg & (1<<3)) printf("Rx Ready\n"); if(status_reg & (1<<4)) printf("Overheat\n"); if(status_reg & (1<<5)) printf("Undervoltage\n"); if(status_reg & (1<<6)) printf("Timeout\n"); if(status_reg & (1<<7)) printf("Reserved"); // Your logic here */ } 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