#include <stdio.h> unsigned char extractNibble(unsigned char reg, int pos) { unsigned int output = 0; if(pos == 0) { return reg & 0x0F; } else if(pos == 1) { return (reg & 0xF0) >> 4; } } int main() { unsigned char reg; int pos; scanf("%hhu %d", ®, &pos); printf("%d", extractNibble(reg, pos)); return 0; }
If pos is 0, we extract the lower nibble using bitwise AND.
If pos is 1, we extract the higher nibble using bitwise AND and we right shift the output by 4 bits to bring it to the places of the lower nibble.
Test Cases
Test Results
Input
170 0
Expected Output
10