Bit Operations using Macros

Code

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

// Define bitwise macros here

uint8_t modify_register(uint8_t reg) {
    int mask=1;//0000 0001
    for(int i=0;i<8;i++)
    {
        if(i==2 || i==7)
        {
            mask=mask<<i;// i=2 0000 0000 | 0000 0100=0000 0100
            reg=reg|mask; // i=7 0001 0100 | 1000 0000=1001 0100
        }
        else
        if(i==3)
        {
            mask=mask<<3;//i=3 0000 0100 & 1111 0111= 0000 0100
            reg=reg&~mask;
        }
        else
        if(i==5)
        {
            mask=mask<<5;//i=5 0000 0100 ^ 0001 0000= 0001 0100
            reg=reg^mask;
        }
        mask=1;
    }
    return reg;
}

int main() {
    uint8_t reg;
    scanf("%hhu", &reg);
    printf("%u", modify_register(reg));
    return 0;
}

Solving Approach

 

 

 

Upvote
Downvote
Loading...

Expected Output

164