Control Register Using Nested Bitfields

Code

#include <stdio.h>

typedef union {
    unsigned char reg;
    struct {
        unsigned char enable   : 1; // bit 0
        unsigned char mode     : 1; // bit 1
        unsigned char priority : 2; // bit 2–3
        unsigned char reserved : 4; // bit 4–7
    } bits;
} Control_Register;

int valid_register(const Control_Register *con_reg) {
    return  (con_reg->bits.enable == 1) &&
            (con_reg->bits.priority <= 2) &&
            (con_reg->bits.reserved == 0);
}

int main(void) {
    Control_Register con_reg = {0};

    scanf("%hhx", &con_reg.reg);     // đọc dạng hex, ví dụ 05

    printf("%d", valid_register(&con_reg));
    return 0;
}

Solving Approach

 

 

 

Upvote
Downvote
Loading...

Input

05

Expected Output

1