129 assert(i>=0 && i<this->
nWords());
133 assert(i>=0 && i<this->
nWords());
139 assert(pos>=0&& pos<this->
nBits());
140 return _data[pos/32];
143 assert(pos>=0&& pos<this->
nBits());
144 return _data[pos/32];
160 if(this->
nBits()==0)
return 32;
161 return 31-((this->
nBits()-1)%32);
166 return static_cast<unsigned>(0xffffffff)>>(this->
unusedBits());
187 if(this->
dataWord(nw-1)<<ub!=0)
return 1;
189 for (
int iw=0;iw<nw-1;iw++){
200 if(this->
dataWord(nw-1)<<ub!=0xffffffff)
return 1;
202 for (
int iw=0;iw<nw-1;iw++){
203 if(this->
dataWord(iw)!=0xffffffff)
return 1;
240 assert(p>=0 && p+n<=this->
nBits());
242 for(
int i=0; i<
n;i++){
251 assert(p>=0 && p+n<=this->
nBits());
253 for(
int i=0; i<
n;i++){
262 assert(p>=0 && p+n<=this->
nBits());
264 for(
int i=0; i<
n;i++){
265 assert(str[i]==
'1'||str[i]==
'0');
269 this->
unset(p+n-i-1);
275 unsigned read(
const int p,
const int n)
const {
276 assert(p>=0 && p+n<=this->
nBits());
280 for(
int i=0; i<
n;i++){
281 if(this->
test(p+i)) out |= 1<<
i;
289 if(i>=0&&i<4*this->
nWords()){
290 unsigned k=(
_data[i/4]>>8*(i%4))&0xff;
298 for (
int i=0;i<this->
nWords();i++) {
330 for(
int i=0; i<this->
nBits();i++){
331 assert(str[i]==
'1'||str[i]==
'0');
333 this->
set(this->
nBits()-i-1);
334 }
else if(str[i]==
'0') {
346 for(
int i = this->
nBits()-1; i>=0; i--){
363 for (
int iw=0;iw<nw-1;iw++){
371 bool operator<(const BitArray<N>&
a)
const {
374 unsigned aaa = this->
dataWord(nw-1)<<ub;
375 unsigned bbb =
a.dataWord(nw-1)<<ub;
378 }
else if (aaa>bbb) {
382 for (
int iw=nw-2;iw>=0;iw--){
385 }
else if (this->
dataWord(iw)>
a.dataWord(iw)) {
403 bool operator<=(const BitArray<N>&
a)
const {
return !(*
this>
a); }
407 for(
int i=0;i<this->
nWords();i++) {
418 for(
int i = 0;i<this->
nWords();i++) {
429 for(
int i = 0;i<this->
nWords();i++) {
440 for(
int i = 0;i<this->
nWords();i++) {
451 assert(n>=0&&n<this->
nBits());
452 if(n==0)
return *
this;
454 for(i=this->
nBits()-1;i>=
n;i--) this->
set(i,this->
element(i-n));
455 for(i=n-1;i>=0;i--) this->
unset(i);
464 assert(n>=0&&n<this->
nBits());
465 if(n==0)
return *
this;
467 for(i=0;i<this->
nBits()-
n;i++) this->
set(i,this->
element(i+n));
479 for(
int i=0;i<this->
nBits();i++) {
495 if(i<this->
nBits())this->
set(
i);
BitArray(const BitArray< N > &br)
void assign(const int p, const int n, const BitArray< N > &val)
BitArray< N > operator^(const BitArray< N > &a)
unsigned lastWordMask() const
BitArray< N > operator>>(const int n)
void assign(const int p, const int n, const char *str)
refToBit & operator=(const int val)
int test(const int i) const
BitArray< N > operator&(const BitArray< N > &a)
BitArray< N > & operator>>=(const int n)
BitArray< 8 > byte(const int i) const
bool operator>=(const BitArray< N > &a) const
BitArray< N > & operator<<=(const int n)
BitArray(const char *str, const int p, const int n)
BitArray< N > & operator+=(const BitArray< N > &a)
BitArray< N > & twoComplement()
BitArray< N > & operator++(int)
BitArray(const unsigned i)
refToBit(BitArray &b, int pos)
BitArray< N > & operator=(const unsigned i)
BitArray< N > & operator^=(const BitArray< N > &a)
BitArray< N > operator|(const BitArray< N > &a)
refToBit & operator=(const refToBit &rtb)
BitArray< N > operator<<(const int n)
unsigned & dataWord(const int i)
unsigned read(const int p, const int n) const
BitArray(const char *str)
BitArray< N > & operator&=(const BitArray< N > &a)
unsigned dataWord(const int i) const
unsigned & getWord(const int pos)
BitArray< N > & operator=(const char *str)
int element(const int pos) const
BitArray< N > twoComplement() const
BitArray< N > & operator|=(const BitArray< N > &a)
BitArray< N > operator+(const BitArray< N > &a)
bool operator!=(const BitArray< N > &a) const
void assign(const int p, const int n, const int val)
static unsigned getPosMask(const int pos)
bool operator==(const BitArray< N > &a) const
unsigned getWord(const int pos) const
std::ostream & print(std::ostream &o=std::cout) const
BitArray< N > operator-(const BitArray< N > &a)
BitArray< N > & operator-=(const BitArray< N > &a)
bool operator>(const BitArray< N > &a) const
BitArray< N > & operator=(const BitArray< N > &a)
static int getPosInWord(const int pos)
refToBit operator[](const int pos)
int operator[](const int pos) const