#include <stdio.h> #include <stdint.h> uint32_t replace_bitfield(uint32_t reg,uint32_t val,int pos,int len){ uint32_t mask=((1U<<len)-1)<<pos; reg &= ~mask; reg|=(val<<pos)&mask; return reg; } int main(){ uint32_t reg,val; int pos,len; scanf("%u %u %d %d", ®,&val,&pos,&len); printf("%u", replace_bitfield(reg,val,pos,len)); return 0; }
Test Cases
Test Results
Input
255 0 4 4
Expected Output
15