c++boostboost-dynamic-bitset

boost dynamic_bitset copy bits from uint16


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);

Solution

  • Just left-shift:

        DataType bs(24, intValue);
        bs <<= 1;
        bs.set(0, boolValue);
    

    Live On Coliru

    #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