#include <iostream>
#include <cstdint>
using namespace std;
class Reg8 {
private:
uint8_t value;
public:
Reg8() : value(0) {}
void write(uint8_t v) {
value = v;
}
uint8_t read() {
return value;
}
void setBit(int bit) {
if (bit >= 0 && bit < 8) {
value |= static_cast<uint8_t>(1u << bit);
}
}
void clearBit(int bit) {
if (bit >= 0 && bit < 8) {
value &= static_cast<uint8_t>(~(1u << bit));
}
}
};
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;
}
Explanation & Logic Summary:
uint8_t enforces true 8-bit register semanticsFirmware Relevance & Real-World Context:
Input
10 1 3
Expected Output
2