I want to add 1 value to the bitset until it over flows, I am wondering how to do this, like:
bitset<20> foo; (foo=00000 00000 00000 00000) how can we implement thi
You may use the following: http://ideone.com/C8O8Qe
template <std::size_t N>
bool increase(std::bitset<N>& bs)
{
for (std::size_t i = 0; i != bs.size(); ++i) {
if (bs.flip(i).test(i) == true) {
return true;
}
}
return false; // overflow
}
And then to iterate on all values :
std::bitset<20> bs;
do {
std::cout << bs << std::endl;
} while (increase(bs));
The following code should help you:
bitset<20> b;
bool overflow = false;
while( ! overflow ){
cout << b << endl; // prints bits in reversed order
int ipos = b.size();
overflow = true;
while( overflow && --ipos >= 0 ){
overflow = b[ipos];
b[ipos] = ! b[ipos];
}
}
tested by @Jarod42, thanks.