#include <stdio.h> #include <stdint.h> uint32_t set_bits(uint32_t reg, uint8_t pos, uint8_t len) { uint32_t tempReg = 0; for(int i = 0; i < len; i++){ tempReg = tempReg << 1; tempReg |= (1 << 0); } reg |= (tempReg << pos); return reg; } int main() { uint32_t reg; uint8_t pos, len; scanf("%u %hhu %hhu", ®, &pos, &len); printf("%u", set_bits(reg, pos, len)); return 0; }
Make a mask first with the initial value of 0
Set the first len amount of the bits
len
Set the reg with the mask while shifting it to the left by pos first
reg
pos
Test Cases
Test Results
Input
0 4 3
Expected Output
112