#include <stdio.h>
#include <stdint.h>
uint32_t extract_field(uint32_t reg, uint8_t pos, uint8_t len) {
// Your code here
int i,j,sum,res,base=1,res1,q;
for(i=0;i<32;i++){
if(i==pos){
for(j=i,i=0,sum=0;i<len;j++,i++){
if(reg>>j&1){
sum=sum*10+1;
}
else{
sum=sum*10;
}
}
break;
}
}
//printf("sum=%d..\n",sum);
for(res=0;sum;sum=sum/10){
res=res*10+sum%10;
}
//printf("res=%d\n",res);
res1=0;
while(res){
q=res%10;
res1=res1+q*base;
base=base*2;
res=res/10;
}
return res1;
}
int main() {
uint32_t reg;
uint8_t pos, len;
scanf("%u %hhu %hhu", ®, &pos, &len);
printf("%u", extract_field(reg, pos, len));
return 0;
}
Input
3060793344 28 4
Expected Output
11