byte& operator-=(const byte& right){
if (this == &right){
b -= right.b;
return *this;
}
}
byte& operator*=(const byte& right){
if (this == &right){
b *= right.b;
return *this;
}
}
byte& operator/=(const byte& right){
if (this == &right){
b /= right.b;
return *this;
}
}
byte& operator%=(const byte& right){
if (this == &right){
b %= right.b;
return *this;
}
}
byte& operator^=(const byte& right){
if (this == &right){
b ^= right.b;
return *this;
}
}
byte& operator&=(const byte& right){
if (this == &right){
b &= right.b;
return *this;
}
}
byte& operator|=(const byte& right){
if (this == &right){
b |= right.b;
return *this;
}
}
byte& operator>>=(const byte& right){
if (this == &right){
b >>= right.b;
return *this;
}
}
byte& operator<<=(const byte& right){
if (this == &right){
b <<= right.b;
return *this;
}
}
//conditional operators return true / false
int operator==(const byte& right) const{
return b == right.b;
}
int operator!=(const byte& right) const{
return b != right.b;
}
int operator<(const byte& right) const{
return b < right.b;
}
int operator>(const byte& right) const{
return b > right.b;
}
int operator<=(const byte& right) const{
return b <= right.b;
}
int operator>=(const byte& right) const{
return b >= right.b;
}
int operator&&(const byte& right) const{
return b && right.b;
}
int operator||(const byte& right) const{
return b || right.b;
}
void print(ostream& os) const{
os<<"0x"<<hex<<int(b)<<dec;
}
/*
b1 = b1 * b2 + b2%b1;
#define TRY1(op)/
out << "b1 = "; b1.print(out);/
out << ",b2 = "; b2.print(out);/
out << "; b1"#op"b2 produces";/
(b1 op b2).print(out);/
out << endl;
*/
};