All submissions

Extract a Bit Field from a 32-bit Register

Code

#include <stdio.h>
#include <stdint.h>

uint32_t extract_field(uint32_t reg, uint8_t pos, uint8_t len) {
    // Your code here
    uint8_t i;
    uint32_t mask=0;
    for (i=pos; i < (pos + len); i++)
    {
        mask = mask | (1 << i);
    }
    reg = (reg & mask) >> pos;
    return reg;
}

int main() {
    uint32_t reg;
    uint8_t pos, len;
    scanf("%u %hhu %hhu", &reg, &pos, &len);
    printf("%u", extract_field(reg, pos, len));
    return 0;
}

Solving Approach

 

create a mask of 1s from the first bit to the last

bitwise AND the mask with the register 

right shift the result to the beginning of the register

 

 

Loading...

Input

3060793344 28 4

Expected Output

11