Extract the Nibble from an 8-bit Register

Code

#include <stdio.h>

unsigned char extractNibble(unsigned char reg, int pos) {
    // Write your code here
    unsigned char nibble1=0;
    unsigned char nibble2=0;
    for (int i=0;i<8;i++){
        if (i<4){
            if(reg&(1<<i)){
                nibble1|=(1<<i);
            }
        }
        else {
            if(reg&(1<<i)){
                nibble2|=(1<<(i-4));
            }
        }
    }
    if (pos==0){
        return nibble1;
    }
    return nibble2;
    

}

int main() {
    unsigned char reg;
    int pos;
    scanf("%hhu %d", &reg, &pos);
    printf("%d", extractNibble(reg, pos));
    return 0;
}

Solving Approach

 

 

 

Upvote
Downvote
Loading...

Input

170 0

Expected Output

10