#include <stdio.h>
#include <stdint.h>
uint32_t extract_field(uint32_t reg, uint8_t pos, uint8_t len) {
// Your code here
// int8_t count = (pos+len-1);
// uint32_t result = 0;
// while(count >= pos)
// {
// result <<= 1;
// result |= ((reg &(1<<count)) >>count);
// count--;
// }
// return result;
int8_t count = pos;
uint32_t result = 0;
uint8_t n = 0;
while(count < (pos+len))
{
result |= (((reg &(1<<count)) >>count)* (1<<n));
count++;
n++;
}
return result;
}
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