#include <stdio.h>
unsigned char modifyBit(unsigned char reg, int pos, int mode) {
// Write your code here
// 10 = 00001010
if(mode==1)
return reg|=(1<<pos);
else if(mode==0)
return reg&=~(1<<pos);
}
int main() {
unsigned char reg;
int pos, mode;
scanf("%hhu %d %d", ®, &pos, &mode);
printf("%d", modifyBit(reg, pos, mode));
return 0;
}
reg | (1 << pos)
1
to the left by pos
places and ORs it with reg
.pos
becomes 1
.reg & ~(1 << pos)
1
to the left by pos
places, inverts it with ~
, and ANDs with reg
.pos
becomes 0
.reg
, pos
, and mode
.mode = 1
, set the bit at position pos
.mode = 0
, clear the bit at position pos
.
Input
10 3 1
Expected Output
10