TBitField TBitField::operator|(const TBitField &bf) // операция "или" { if (BitSize == bf.BitSize) { TBitField tmp(BitSize); for (int i=0; i< BitSize; i++) { int tmpval = (GetBit(i) || bf.GetBit(i)); if (tmpval == 0) tmp.ClrBit(i); else tmp.SetBit(i); } return tmp; } else { if (BitSize > bf.BitSize) { TBitField tmp(BitSize); for (int i = 0; i < bf.BitSize; i++) { int tmpval = (GetBit(i) || bf.GetBit(i)); if (tmpval == 0) tmp.ClrBit(i); else tmp.SetBit(i); } for (int i = bf.BitSize; i < BitSize; i++) if (GetBit(i) == 1) tmp.SetBit(i); else tmp.ClrBit(i); return tmp; } else { TBitField tmp(bf.BitSize); for (int i = 0; i < BitSize; i++) { int tmpval = (GetBit(i) || bf.GetBit(i)); if (tmpval == 0) tmp.ClrBit(i); else tmp.SetBit(i); } for (int i = BitSize; i < bf.BitSize; i++) if (bf.GetBit(i) == 1) tmp.SetBit(i); else tmp.ClrBit(i); return tmp; } } }
int TBitField::operator!=(const TBitField &bf) const // сравнение { if (BitLen!=bf.BitLen) return 1; for (int i=0;i<BitLen;i++) if (GetBit(i)!=bf.GetBit(i)) return 1; return 0; }
int TBitField::operator!=(const TBitField &bf) const // сравнение { if (BitSize != bf.BitSize) return 1; else { for (int i = 0;i < BitSize; i++) if (GetBit(i) != bf.GetBit(i)) return 1; return 0; } }
int TBitField::operator==(const TBitField &bf) const // сравнение { int res=1; if (BitLen!=bf.BitLen) res=0; else { for (int i=0; i < BitLen ;i++) if (this->GetBit(i)!=bf.GetBit(i)) { res=0; break; } } return res; }