Set Specific Bits in a 32-bit Register

Code

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

uint32_t set_bits(uint32_t reg, uint8_t pos, uint8_t len) {
    // Your code here
    uint32_t mask = ((1<<len)-1);
    return reg|(mask<<pos);
}

int main() {
    uint32_t reg;
    uint8_t pos, len;
    scanf("%u %hhu %hhu", &reg, &pos, &len);
    printf("%u", set_bits(reg, pos, len));
    return 0;
}

Solving Approach

As we want 1 of certain length side by side. remember that 2^3 - 1 gives 3 ones.

using the above idea we make that ones side by side named as mask.
And, this mask is again shifted by position to set bits in register

 

 

Upvote
Downvote
Loading...

Input

0 4 3

Expected Output

112