All submissions

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) {
    uint32_t i = pos;
    val = val << pos;
    while(len!=0)
    {
        reg = reg &~(1<<i);
        i++;
        len--;
    }
    reg = reg | val;
    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

move the value to the position wheer we want to replace
make the same position in the register to zeros

then just do the OR operation

 

 

Loading...

Input

255 0 4 4

Expected Output

15