Set or Clear a Specific Bit in a Register

Code

#include <stdio.h>

unsigned char modifyBit(unsigned char reg, int pos, int mode) {
    if (mode){
        reg |= (1<<pos);
    }
    else{
        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

First, decide what mode is by using an if statement. If the mode is set, use the bitwise or method with bitshifted 1. To reset, use the and operator and set all bits other than the one that is getting reset as 1

 

 

Upvote
Downvote
Loading...

Input

10 3 1

Expected Output

10