#include <stdio.h> #include <stdint.h> uint32_t extract_field(uint32_t reg, uint8_t pos, uint8_t len) { // Your code here int result=0; int result2 =0; reg = reg>>pos; for (int i = 1; i <= len; i++){ int bit = reg & 1; result = result <<1; result = result|bit; reg = reg >>1; } while (result){ int bit = result & 1; result2 = result2 <<1; result2 = result2 |bit; result = result >> 1; } return result2; } int main() { uint32_t reg; uint8_t pos, len; scanf("%u %hhu %hhu", ®, &pos, &len); printf("%u", extract_field(reg, pos, len)); return 0; }
Test Cases
Test Results
Input
3060793344 28 4
Expected Output
11