Вас могут заинтересовать std::vector<bool>
(то есть битовая упаковка) и std::bitset
Это должно быть самым простым, как требуется.
#include <iostream>
#include <bitset>
using namespace std;
int main() {
bitset<8> bs = 5;
bitset<8> rev;
for(int ii=0; ii!= bs.size(); ++ii)
rev[bs.size()-ii-1] = bs[ii];
cerr << bs << " " << rev << endl;
}
Другие опции могут быть быстрее.
РЕДАКТИРОВАТЬ: я должен вам решение, используя std::vector<bool>
#include <algorithm>
#include <iterator>
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<bool> b{0,0,0,0,0,1,0,1};
reverse(b.begin(), b.end());
copy(b.begin(), b.end(), ostream_iterator<int>(cerr));
cerr << endl;
}
Во втором примере требуется расширение c ++ 0x (для инициализации массива с {...}
). Преимущество использования bitset
или std::vector<bool>
(или boost::dynamic_bitset
) состоит в том, что вы не ограничены байтами или словами, но можете обратить произвольное количество битов.
НТН