#include <stdio.h>
unsigned char modifyBit(unsigned char reg, int pos, int mode) {
// Write your code here
if(mode == 1)
{
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
Based on the user mode (1 set or 0 clear), the bit is shifted left to the specified position pos and a AND operation is performed with the negate of the bit post in case of clear and OR operation is performed in case of set.