17. Extract the Nibble from an 8-bit Register

Back To All Submissions
Previous Submission
Next Submission

Code

#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", &reg, &pos);
    printf("%d", extractNibble(reg, pos));
    return 0;
}

Solving Approach

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.

 

 

Was this helpful?
Upvote
Downvote