All submissions

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 == 1){
        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

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.

 

 

Loading...

Input

10 3 1

Expected Output

10