8-Bit Register Class

#include <iostream>
#include <cstdint>
using namespace std;

// Define Reg8 class here
class Reg8
{
public:
    Reg8() : reg_val(0)
    {
    }

    ~Reg8()
    {
    }

    void write(uint8_t v)
    {
        reg_val = v;
        return;  
    }

    uint8_t read()
    {
        return reg_val; 
    }

    void setBit(int bit)
    {
        if (bit > 7 || bit < 0)
        {
            // print error
            return; 
        }

        reg_val |= (1u << bit); 
        return; 
    }

    void clearBit(int bit)
    {
        if (bit > 7 || bit < 0)
        {
            // print error
            return; 
        }

        reg_val &= ~(1u << bit); 
        return; 
    }

private:
    uint8_t reg_val; 
};

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

Solving Approach

 

 

 

 

Upvote
Downvote
Loading...

Input

10 1 3

Expected Output

2