int TBitField::GetBit(const int n) const { if ((n<0) || (n>=BitLen)) throw out_of_range("out of range"); return (((pMem[GetMemIndex(n)] & GetMemMask(n)) == 0)? 0 : 1); }
void TBitField::SetBit(const int n) { if ((n<0) || (n>=BitLen)) throw out_of_range("Out of range"); pMem[GetMemIndex(n)]|=GetMemMask(n); }
void TBitField::SetBit(const int n) // установить бит { if ((n<0) || (n>BitLen)) throw "Error"; else pMem[GetMemIndex(n)] |= GetMemMask(n); }
int TBitField::GetBit(const int n) const // получить значение бита { if ((n > -1)&&(n < BitLen)) { int i = GetMemIndex(n); return (pMem[i] & GetMemMask(n)) >> (n % 16); }
int TBitField::GetBit(const int n) const // получить значение бита { if ((n>=0) && (n<BitLen)) { return ((pMem[GetMemIndex(n)] & GetMemMask(n))>0); }else throw new exception(); }
void TBitField::SetBit(const int n) // установить бит { if ((n<0)||(n>=BitLen)) throw n; int Ind = GetMemIndex(n); TELEM mask = GetMemMask(n); pMem[Ind] = pMem[Ind]|mask; }
void TBitField::SetBit(const int n) // установить бит { if ((n>=0) && (n<BitLen)) { pMem[GetMemIndex(n)] |= GetMemMask(n); } else throw new exception(); }
int TBitField::GetBit(const int n) const // получить значение бита { if (n <0) throw "Negative Index"; else if (n >BitLen) throw "Index more than length of bit field"; else return pMem[GetMemIndex(n)]& GetMemMask(n); }
void TBitField::SetBit(const int n) // установить бит { if (n < 0) throw "Negative Index"; else if (n > BitLen) throw "Index more than length of bit field"; else pMem[GetMemIndex(n)]|=GetMemMask(n); }
void TBitField::SetBit(const int n) // установить бит { if ((n > -1)&&(n < BitLen)) { int i = GetMemIndex(n); pMem[i] = pMem[i] | GetMemMask(n); } else throw "SET_BIT_WITH_NEGATIVE_OR_TOO_LARGE_INDEX"; }
void TBitField::ClrBit(const int n) // очистить бит { if ((n>=0)&&(n<BitLen)) {int index; index=GetMemIndex(n); TELEM Mask; Mask=GetMemMask(n); pMem[index]&=~Mask;} else { throw invalid_argument("Len<=0..."); } }
int TBitField::GetBit(const int n) const // получить значение бита { if ((n<0)||(n>=BitLen)) throw n; int Ind = GetMemIndex(n); TELEM mask = GetMemMask(n); if (pMem[Ind]&mask) return 1; else return 0; }
void TBitField::ClrBit(const int n) // очистить бит { if ((n < 0)||(n > BitSize)) throw n; else { int m = GetMemIndex(n); TELEM mask = GetMemMask(n); mas[m]= (mas[m] & ~mask); } }
void TBitField::SetBit(const int n) // установить бит { if ((n < 0)||(n > BitSize)) throw n; else { int m = GetMemIndex(n); TELEM mask = GetMemMask(n); mas[m] = (mas[m] | mask); } }
TBitField TBitField::operator~(void) { int n=BitLen; TBitField tmp(n); TELEM f = 0; for (int i=0;i<(BitLen % B_pMem);i++) f |= GetMemMask(i); pMem[MemLen - 1] |= (~f); for (int i=0;i<MemLen;i++) tmp.pMem[i]=~pMem[i]; return tmp; }
int TBitField::GetBit(const int n) const // получить значение бита ???? { if((n<0)||(n>BitLen)) throw "Error"; else { TELEM temp = GetMemMask(n); if((pMem[GetMemIndex(n)]&temp)==0) return 0; else return 1; } }
int TBitField::GetBit(const int n) const // получить значение бита { if ((n>=0)&&(n<BitLen)) return pMem[GetMemIndex(n)]&GetMemMask(n); else { throw invalid_argument("Len<=0..."); } //return 0; /*int fl=1; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! int index=GetMemIndex(n); TELEM Mask=GetMemMask(n); Mask=Mask&pMem[index]; if (Mask=0) fl=0; return fl;*/ }
int TBitField::GetBit(const int n) const // получить значение бита { if ((n < 0)||(n > BitSize)) throw n; else { int m = GetMemIndex(n); // ищем ячейку TELEM mask = GetMemMask(n); // маска на эту ячейку int result = (mask & mas[m]); if (result == 0) return(0); else return(1); } }
int TBitField::GetBit(const int n) const // получить значение бита { if ((n>-1)&&(n<BitLen)) return pMem[GetMemIndex(n)] & GetMemMask(n); return 0; }
int TBitField::GetBit(const int n) const // получить значение бита { if ((n < 0) || (n > BitLen)) throw out_of_range("out of range"); return pMem[GetMemIndex(n)] & GetMemMask(n); }
void TBitField::SetBit(const int n) // установить бит { if ((n<0)||(n>BitLen)) throw invalid_argument("--"); pMem[GetMemIndex(n)]=pMem[GetMemIndex(n)]|GetMemMask(n); }
int TBitField::GetBit(const int n) const // получить значение бита { if ((n<0)||(n>BitLen)) throw invalid_argument("--"); if ((pMem[GetMemIndex(n)] & GetMemMask(n))>0 ) return 1; else return 0; }
void TBitField::SetBit(const int n) // установить бит { int i = GetMemIndex(n); TELEM mask = GetMemMask(n); pMem[i] |= mask; }