1. Set or Clear a Specific Bit in a Register

Back To All Submissions
Previous Submission
Next Submission

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

 

 

Was this helpful?
Upvote
Downvote