All submissions

Extract Bit Field from 16-bit Register

Code

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

typedef union {
    uint16_t status;
    struct{
        uint16_t first : 4;
        uint16_t second : 5;
        uint16_t last : 7;
    }bits;
}Register;

uint8_t extract_field(uint16_t reg) {
    // Your logic here
    /*SOLUTION 1 WITH BIT FIELD :
    Register r;
    r.status = reg;
    return r.bits.second;*/

    /*SOLUTION 2 -> XXXX XXX1 1111 XXXX*/ 
    return (reg >> 4)& 0x1F;
}

int main() {
    uint16_t reg;
    scanf("%hx", &reg);
    printf("%u", extract_field(reg));
    return 0;
}

Solving Approach

 

 

 

Loading...

Input

0x01F0

Expected Output

31