Replace Bit Field in a 32-bit Register

Code

#include <stdio.h>

#include <stdint.h>

 

uint32_t replace_field(uint32_t reg, uint32_t val, uint8_t pos, uint8_t len) {

    // Your code here

    uint32_t mask = (1U << len) - 1U;

    reg &= ~(mask << pos);

    reg |= (val << pos);

 

    return reg;

}

 

int main() {

    uint32_t reg, val;

    uint8_t pos, len;

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

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

    return 0;

}

Solving Approach

 

 

 

Upvote
Downvote
Loading...

Input

255 0 4 4

Expected Output

15