2

我有一个 7 字节/56 位的位集,在构造时将第一位设置为一个:

boost::dynamic_bitset<> b(56, 1);

构建后,我想将一个整数值(比如 2019 年)放入第 4 位到第 15 位。我很好奇 boost 中是否有一种简单的方法可以在没有位运算的情况下做到这一点?基本上,我想将一系列位设置为一个整数值,我知道该整数值足够小以适合这些位。感谢您的任何建议。

4

1 回答 1

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);
于 2012-04-01T18:34:27.703 回答