Replace Bit Field in a 32-bit Register

Code

#include <stdio.h>

unsigned int replace_bits(unsigned int reg, unsigned int val, int pos, int len)
{
    unsigned int mask = (1 << len) - 1;

    reg = (reg & ~(mask << pos)) | ((val & mask) << pos);

    return reg;
}

int main()
{
    unsigned int reg, val;
    int pos, len;

    scanf("%u %u %d %d", &reg, &val, &pos, &len);

    printf("%u", replace_bits(reg, val, pos, len));

    return 0;
}

Solving Approach

 

 

 

Upvote
Downvote
Loading...

Input

255 0 4 4

Expected Output

15