Set or Clear a Specific Bit in a Register

Code

#include <stdio.h>

unsigned char modifyBit(unsigned char reg, int pos, int mode) {
    // Write your code here
    if (mode == 1){
        reg |= (1 << pos);
    }else{
        reg = reg  & (~(1<<pos));
    }
    return reg;
}

int main() {
    unsigned char reg;
    int pos, mode;
    scanf("%hhu %d %d", &reg, &pos, &mode);
    printf("%d", modifyBit(reg, pos, mode));
    return 0;
}

Solving Approach

In the case we need to set the bit, we just need to move to this bit and turn it on, no matter whether it is on or off.

In  case clear, we move to bit to be cleared and & with bit 0.

 

 

Upvote
Downvote
Loading...

Input

10 3 1

Expected Output

10