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) {
    for(uint32_t i = 0; i<len; i++){
        reg |= (1<<(pos+i));
    }
    return reg;
}

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

we used 'for' loop to set len no of bits

the pos inside the loop is used as an offset to tell the initial bit to the program

 

 

 

Upvote
Downvote
Loading...

Input

0 4 3

Expected Output

112