#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; }
Test Cases
Test Results
Input
10 1 3
Expected Output
2