構築時に最初のビットを 1 に設定する 7 バイト/56 ビットのビットセットがあります。
boost::dynamic_bitset<> b(56, 1);
構築後、整数値 (2019 など) をビット 4 から 15 に配置したいと思います。ブースト内でビット単位の操作なしでこれを行う簡単な方法があるかどうか知りたいですか? 基本的に、ビットの範囲を、それらのビットに収まるほど小さいことがわかっている整数値に設定したいと考えています。アドバイスをありがとう。
構築時に最初のビットを 1 に設定する 7 バイト/56 ビットのビットセットがあります。
boost::dynamic_bitset<> b(56, 1);
構築後、整数値 (2019 など) をビット 4 から 15 に配置したいと思います。ブースト内でビット単位の操作なしでこれを行う簡単な方法があるかどうか知りたいですか? 基本的に、ビットの範囲を、それらのビットに収まるほど小さいことがわかっている整数値に設定したいと考えています。アドバイスをありがとう。
は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);