Es ist nicht zu hart mit einem Einzeiler zu lösen, aber es ist eigentlich eine Standard-Bibliothek Lösung.
#include <bitset>
#include <algorithm>
std::vector<int> get_bits(unsigned long x) {
std::string chars(std::bitset< sizeof(long) * CHAR_BIT >(x)
.to_string< char, std::char_traits<char>, std::allocator<char> >());
std::transform(chars.begin(), chars.end(),
std::bind2nd(std::minus<char>(), '0'));
return std::vector<int>(chars.begin(), chars.end());
}
C++ 0x macht es sogar einfacher!
#include <bitset>
std::vector<int> get_bits(unsigned long x) {
std::string chars(std::bitset< sizeof(long) * CHAR_BIT >(x)
.to_string(char(0), char(1)));
return std::vector<int>(chars.begin(), chars.end());
}
Dies ist eine der bizarreren Ecken der Bibliothek. Vielleicht war das, woran sie fuhren, die Serialisierung.
cout << bitset<8>(x) << endl; // print 8 low-order bits of x
Ich denke, du meinst _bit_ Darstellung. – fbrereto
Ist das Hausaufgaben? – fbrereto
Da eine ganze Zahl eine feste Größe ist, warum nicht nur ein einfaches Array verwenden? –