Set Specific Bits in a 32-bit Register

Code

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

// You are working with a 32-bit configuration register. Set a few bits starting from a given position and covering a specific length. The bits must be set to 1 (ON), without affecting other bits in the register.
// Use 0-based indexing

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

 

 

 

Upvote
Downvote
Loading...

Input

0 4 3

Expected Output

112