#include <iterator>
#include <climits>
#include <iostream>
//this version of gcc doesn't seem to have begin/end so I add them here
namespace std {
template< class T, size_t N >
T* begin( T (&array)[N] ) {return array;}
template< class T, size_t N >
T* end( T (&array)[N] ) {return array+N;}
}
//you shouldn't have to do this
template<class output_iterator>
void convert_number_to_array_of_digits(const unsigned number,
output_iterator first, output_iterator last)
{
const unsigned number_bits = CHAR_BIT*sizeof(int);
//extract bits one at a time
for(unsigned i=0; i<number_bits && first!=last; ++i) {
const unsigned shift_amount = number_bits-i-1;
const unsigned this_bit = (number>>shift_amount)&1;
*first = this_bit;
++first;
}
//pad the rest with zeros
while(first != last) {
*first = 0;
++first;
}
}
int main() {
int number = 413523152;
int array[32];
convert_number_to_array_of_digits(number, std::begin(array), std::end(array));
for(int i=0; i<32; ++i)
std::cout << array[i] << ' ';
}
I2luY2x1ZGUgPGl0ZXJhdG9yPgojaW5jbHVkZSA8Y2xpbWl0cz4KI2luY2x1ZGUgPGlvc3RyZWFtPgoKLy90aGlzIHZlcnNpb24gb2YgZ2NjIGRvZXNuJ3Qgc2VlbSB0byBoYXZlIGJlZ2luL2VuZCBzbyBJIGFkZCB0aGVtIGhlcmUKbmFtZXNwYWNlIHN0ZCB7CnRlbXBsYXRlPCBjbGFzcyBULCBzaXplX3QgTiA+IApUKiBiZWdpbiggVCAoJmFycmF5KVtOXSApIHtyZXR1cm4gYXJyYXk7fQp0ZW1wbGF0ZTwgY2xhc3MgVCwgc2l6ZV90IE4gPiAKVCogZW5kKCBUICgmYXJyYXkpW05dICkge3JldHVybiBhcnJheStOO30KfQovL3lvdSBzaG91bGRuJ3QgaGF2ZSB0byBkbyB0aGlzCgogICAgdGVtcGxhdGU8Y2xhc3Mgb3V0cHV0X2l0ZXJhdG9yPgogICAgdm9pZCBjb252ZXJ0X251bWJlcl90b19hcnJheV9vZl9kaWdpdHMoY29uc3QgdW5zaWduZWQgbnVtYmVyLCAKICAgICAgICAgICAgIG91dHB1dF9pdGVyYXRvciBmaXJzdCwgb3V0cHV0X2l0ZXJhdG9yIGxhc3QpIAogICAgewogICAgICAgIGNvbnN0IHVuc2lnbmVkIG51bWJlcl9iaXRzID0gQ0hBUl9CSVQqc2l6ZW9mKGludCk7CiAgICAgICAgLy9leHRyYWN0IGJpdHMgb25lIGF0IGEgdGltZQogICAgICAgIGZvcih1bnNpZ25lZCBpPTA7IGk8bnVtYmVyX2JpdHMgJiYgZmlyc3QhPWxhc3Q7ICsraSkgewogICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBzaGlmdF9hbW91bnQgPSBudW1iZXJfYml0cy1pLTE7CiAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIHRoaXNfYml0ID0gKG51bWJlcj4+c2hpZnRfYW1vdW50KSYxOwogICAgICAgICAgICAqZmlyc3QgPSB0aGlzX2JpdDsKICAgICAgICAgICAgKytmaXJzdDsKICAgICAgICB9CiAgICAgICAgLy9wYWQgdGhlIHJlc3Qgd2l0aCB6ZXJvcwogICAgICAgIHdoaWxlKGZpcnN0ICE9IGxhc3QpIHsKICAgICAgICAgICAgKmZpcnN0ID0gMDsKICAgICAgICAgICAgKytmaXJzdDsKICAgICAgICB9CiAgICB9CiAgICAKICAgIGludCBtYWluKCkgewogICAgICAgIGludCBudW1iZXIgPSA0MTM1MjMxNTI7CiAgICAgICAgaW50IGFycmF5WzMyXTsKICAgICAgICBjb252ZXJ0X251bWJlcl90b19hcnJheV9vZl9kaWdpdHMobnVtYmVyLCBzdGQ6OmJlZ2luKGFycmF5KSwgc3RkOjplbmQoYXJyYXkpKTsKICAgICAgICBmb3IoaW50IGk9MDsgaTwzMjsgKytpKQogICAgICAgICAgICBzdGQ6OmNvdXQgPDwgYXJyYXlbaV0gPDwgJyAnOwogICAgfQ==