#include <iostream>
#include <cstdint>
using namespace std;
class Reg8{
private:
uint8_t regval;
public:
Reg8() : regval(0){}
void write(uint8_t val){
regval = val;
}
uint8_t read(){
return regval;
}
void setBit(int );
void clearBit(int );
};
void Reg8::setBit(int b){
if(b >= 0 && b < 8){
Reg8::regval |= static_cast<uint8_t>(1U << b);
}
}
void Reg8::clearBit(int b){
if(b >= 0 && b < 8){
Reg8::regval &= static_cast<uint8_t>(~(1U << b));
}
}
int main() {
int initialValue;
int bitToSet, bitToClear;
cin >> initialValue >> bitToSet >> bitToClear;
Reg8 reg;
reg.write(static_cast<uint8_t>(initialValue));
reg.setBit(bitToSet);
reg.clearBit(bitToClear);
cout << static_cast<int>(reg.read());
return 0;
}
Input
10 1 3
Expected Output
2