#include <stdio.h> unsigned char extractNibble(unsigned char reg, int pos) { unsigned char mask = (1 << 4) - 1; if (pos == 1) { mask = ~mask; // flip to cover upper 4 bits return (reg & mask) >> 4; // make sure to shift back } return reg & mask; } 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