#include <stdio.h> unsigned char extractNibble(unsigned char reg, int pos) { if(pos) { return reg >> 4; } else { return reg &= 0xF; } } int main() { unsigned char reg; int pos; scanf("%hhu %d", ®, &pos); printf("%d", extractNibble(reg, pos)); return 0; }
If we need the upper nibble, right shift to remove the lower 4 bits. If we need the lower nibble, bitwise-and with a lower nibble mask.
Test Cases
Test Results
Input
170 0
Expected Output
10