#include <stdio.h>
#include <stdint.h>
uint32_t extract_field(uint32_t reg, uint8_t pos, uint8_t len) {
// Your code here
uint8_t mask;
switch (len) {
case 1 :
mask = 0b00000001;
break;
case 2 :
mask = 0b00000011;
break;
case 3 :
mask = 0b00000111;
break;
case 4 :
mask = 0b00001111;
break;
case 5 :
mask = 0b00011111;
break;
case 6 :
mask = 0b00111111;
break;
case 7 :
mask = 0b01111111;
break;
case 8 :
mask = 0b11111111;
break;
}
reg >>= pos;
reg &= mask;
return reg;
}
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