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) {
    
    return (mode) ? (reg | (1 << pos)) : (reg & ~(1 << pos));
}

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

If you are familiar with setting or clearing a bit the approach is straight forward. The main thing that makes this code different is that the function is asking for a mode which eventually will dictate the manipulation if is either to clear or to set. In most cases in the embedded world you will see methods that are dedicated to do this task independently either clearBit() or setBit() without asking for a mode.

 

 

Was this helpful?
Upvote
Downvote