#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", ®, &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