Clear Specific Bits in a 32-bit Register

Code

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

uint32_t clear_bits(uint32_t reg, uint8_t pos, uint8_t length){
    
    uint8_t end = pos + length - 1; 
    for(uint8_t i=pos; i<= end; i++)
    {
        reg &= ~(1u<<i);
    }
    return reg; 
}

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

Solving Approach

 

 

 

Upvote
Downvote
Loading...

Input

255 4 4

Expected Output

15