#include <stdio.h> #include <stdint.h> #define EXTRACT_POS 4 #define EXTRACT_SIZE 5 #define EXTARCT_MASK (1 << EXTRACT_SIZE) - 1 static uint16_t temp = 0; uint8_t extract_field(uint16_t reg) { // Your logic here for(int i=0; i < EXTRACT_SIZE; i++) { temp |= (((reg >> (EXTRACT_POS + i)) & 1) << i); } return temp; } int main() { uint16_t reg; scanf("%hx", ®); printf("%u", extract_field(reg)); return 0; }
Test Cases
Test Results
Input
0x01F0
Expected Output
31