All submissions

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
    int mask = 0;
    for(int i=0;i<len;i++)
        mask = mask | (1<<i);

    mask = mask << pos;
    return reg | mask;
}

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

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

uint32_t set_bits(uint32_t reg, uint8_t pos, uint8_t len) {
    // Your code here
    int mask = 0;
    for(int i=0;i<len;i++)
        mask = mask | (1<<i);

    mask = mask << pos;
    return reg | mask;
}

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;
}
for(int i=0;i<len;i++)
        mask = mask | (1<<i);

    mask = mask << pos;
    return reg | mask;
1. for(int i=0;i<len;i++)
        mask = mask | (1<<i);

i am iterarting the for loop till len.
mask | (1<<i) --> left shifting the 1 to the position into the mask.

2. mask = mask << pos --> right shifting the pos.

3. return reg | mask  --> masking the value reg value with the mask.
Loading...

Input

0 4 3

Expected Output

112