#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", ®, &pos, &mode); printf("%d", modifyBit(reg, pos, mode)); return 0; }
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
Test Cases
Test Results
Input
10 3 1
Expected Output
10