#include <stdio.h>
unsigned char extractNibble(unsigned char reg, int pos) {
// Write your code here
if( (reg > 255) || (reg < 0) )
return -1;
if ((bool)pos)
return ((reg & 0xf0) >> 4);
else
return (reg & 0x0f);
}
int main() {
unsigned char reg;
int pos;
scanf("%hhu %d", ®, &pos);
printf("%d", extractNibble(reg, pos));
return 0;
}
Solving Approach
Since it is only a 8bit char, and the pos value can be 0 or 1, I would rather use them as boolean and return appropriate nibble use masking and bit-shifting.