#include <stdio.h> #include <stdint.h> typedef union { uint16_t status; struct{ uint16_t first : 4; uint16_t second : 5; uint16_t last : 7; }bits; }Register; uint8_t extract_field(uint16_t reg) { // Your logic here /*SOLUTION 1 WITH BIT FIELD : Register r; r.status = reg; return r.bits.second;*/ /*SOLUTION 2 -> XXXX XXX1 1111 XXXX*/ return (reg >> 4)& 0x1F; } int main() { uint16_t reg; scanf("%hx", ®); printf("%u", extract_field(reg)); return 0; }
Test Cases
Test Results
Input
0x01F0
Expected Output
31