Validate Configuration Register Layout

Code

#include <stdio.h>
#include <cstdint>

typedef union
{    struct
    {
       
        unsigned int enable   : 1;  
        unsigned int mode     : 1;  
        unsigned int priority : 2; 
        unsigned int reserve : 12;

    }bits;
   unsigned int reg; 
} ConfigRegister;

int validate_config(ConfigRegister *cfg) {
    // Write logic using pointer access
    
    //printf("e:%d\n",cfg->bits.enable );
    //printf("p:%d\n",cfg->bits.priority );
    //printf("r:%d\n",cfg->bits.reserve );
    if( (cfg->bits.enable==1) && (cfg->bits.priority != 0x11)  && (cfg->bits.reserve == 0))
    return 1;
    else
    return 0;
}

int main() {
    ConfigRegister cfg;
    scanf("%hx", &cfg.reg);

    int result = validate_config(&cfg);
    printf("%d", result);

    return 0;
}

Solving Approach

 

 

 

Upvote
Downvote
Loading...

Input

0005

Expected Output

1