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=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

1.Read inputs

reg-8 bit number

pos-bit position(0-7)

mode-set/clear

2.create bit mask

shift 1 left by pos-(1<<pos)

3.check mode

if mode 1=set bit using or

if mode 0=clear bit using and with inverted mask

4.Return modified value

5.Print the result

 

Upvote
Downvote
Loading...

Input

10 3 1

Expected Output

10