我有一个7字节/ 56位的位集,在构造时将第一位设置为1:
boost::dynamic_bitset<> b(56, 1);
构造之后,我想将一个整数值(比如2019)放到第4到15位。我很好奇是否有一种简单的方法可以在没有按位运算的情况下执行此操作?基本上,我想将一个位范围设置为一个整数值,我知道它足够小以适应这些位。谢谢你的任何建议。
答案 0 :(得分:4)
boost::dynamic_bitset<>
功能少得多。我认为唯一的可能是使用普通循环:
template <typename Bitset>
void set_in_range(Bitset& b, unsigned value, int from, int to)
{
for (int i = from; i < to; ++i, value >>= 1)
b[i] = (value & 1);
}
boost::dynamic_bitset<> b(56, 1);
set_in_range(b, 2019, 4, 15);