I need to create 24 bit set. First (0) bit have to be set by bool. And other (1 - 23) I need to copy first bits from uint32 value
Is it possible to do it with dynamic_bitset ?
My code I tried but wrong:
typedef boost::dynamic_bitset<unsigned char> DataType;
DataType bs(24, intValue);
bs.set(0, booleanValue);
Just left-shift:
DataType bs(24, intValue);
bs <<= 1;
bs.set(0, boolValue);
#include <boost/dynamic_bitset.hpp>
#include <iostream>
typedef boost::dynamic_bitset<unsigned char> DataType;
int main() {
using namespace std; // for readability on SO
cout << hex << showbase;
uint32_t intValue = 0x666;
cout << "input: " << intValue;
DataType bs(24, intValue);
cout << "\n#1: " << bs << " " << bs.to_ulong();
bs <<= 1;
cout << "\n#2: " << bs << " " << bs.to_ulong();
bs.set(0, true);
cout << "\n#3: " << bs << " " << bs.to_ulong();
}
Prints:
input: 0x666
#1: 000000000000011001100110 0x666
#2: 000000000000110011001100 0xccc
#3: 000000000000110011001101 0xccd