Посмотрите на набор битов от старших значащих битов до младших значащих битов
#include <iostream>
#include <boost/dynamic_bitset.hpp>
int main(int, char*[]) {
boost::dynamic_bitset<> x(5); // all 0's by default
x[0] = 1;
x[1] = 1;
x[4] = 1;
std::cout << x << "\n";
return EXIT_SUCCESS;
}
Выходные данные
10011
Оператор <<
для dynamic_bitset
печатает набор битов изот наиболее значимого к наименее значимому, поскольку этот формат используется большинством людей для чтения.
И это то, что вы делаете
b1.push_back(0); b1.push_back(1);//b1 = 10
b2.push_back(1); b2.push_back(0);//b2 = 01
Повышение корректно.Вы должны изменить порядок push_back
s, чтобы получить то, что вы хотели. Повышение