我想在位集上添加1值,直到溢出为止,我想知道如何做到这一点,例如:
位集< 20 – ; FOO; (foo = 00000 00000 00000 00000)
我们如何实现这一功能,不断添加一个
00000 00000 00000 00000 00000 > 00000 00000 00000 00000 00001 > 00000 00000 00000 00000 >00010 > 00000 00000 00000 00000 000011 until it overflows?
我正在考虑两种方法;
foo.to_ulong();
如何再次将unsigned long转换回bitset? C文档表明有可能,但是在库中,我只能看到正在创建新位集的位集(无符号long val).
2.
不知何故,一些操作都卡住了,需要帮助
解决方法:
您可以使用以下内容: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
}
然后迭代所有值:
std::bitset<20> bs;
do {
std::cout << bs << std::endl;
} while (increase(bs));