#include <stdio.h> unsigned char extractNibble(unsigned char reg, int pos) { unsigned char nibble; if (pos & 0x1) // pos equals 1 { nibble = (reg >> 0x04) & 0x0F; // shift upper nibble to lower nibble then bitwise and } else { nibble = reg & 0x0F; // bitwise and lower nibble } return nibble; } int main() { unsigned char reg; int pos; scanf("%hhu %d", ®, &pos); printf("%d", extractNibble(reg, pos)); return 0; }
Test Cases
Test Results
Input
170 0
Expected Output
10