Extract the Nibble from an 8-bit Register

Code

#include <stdio.h>
#include <stdint.h>

unsigned char extractNibble(unsigned char reg, int pos) 
{
    uint16_t result = 0x00;
    if(pos == 1)
    {
        
        for(int i = 4; i >= 0 ; i--)
        {
            result = (reg >> i)& 0x0F ;    
    
        }
        //printf("%d \n",result);
    }
    else
    {   
        for(int i = 4; i >= 0 ; i--)
        {
            result = (reg >> i)& 0x0F ;    
            result |= result;
        }

    }
    return result;
}

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