8-Bit Register Class

#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;
}

Redundant checks

 

 

 

 

Upvote
Downvote
Loading...

Input

10 1 3

Expected Output

2