#include <stdio.h> #include <stdint.h> uint32_t setBits(uint32_t reg, int pos, int len) { uint32_t mask = ((1U << len) - 1) << pos; return reg | mask; } int main() { uint32_t reg; int pos, len; // Input register, position, and length scanf("%u %d %d", ®, &pos, &len); // Output modified register printf("%u\n", setBits(reg, pos, len)); return 0; }
Create a mask of len bits set to 1: mask = (1U << len) - 1;
Shift the mask to the target position: shifted_mask = mask << pos;
Set the bits using OR operation: result = reg | shifted_mask;
Test Cases
Test Results
Input
0 4 3
Expected Output
112