#include <stdio.h> #include <stdint.h> uint32_t set_bits(uint32_t reg, uint8_t pos, uint8_t len) { // Your code here uint32_t mask = ((1<<len)-1); return reg|(mask<<pos); } int main() { uint32_t reg; uint8_t pos, len; scanf("%u %hhu %hhu", ®, &pos, &len); printf("%u", set_bits(reg, pos, len)); return 0; }
As we want 1 of certain length side by side. remember that 2^3 - 1 gives 3 ones.
using the above idea we make that ones side by side named as mask.And, this mask is again shifted by position to set bits in register
Test Cases
Test Results
Input
0 4 3
Expected Output
112