fork download
#include <iostream>
#include <limits>

unsigned int ReverseBits(unsigned int input)
{
    unsigned int output = input;
    for (int i = sizeof(input) * 8 - 1; i; --i)
    {
        output <<= 1;
        input >>= 1;
        output |= input & 1;
    }
    return output;
}

struct Bits
{
    unsigned bits;
    Bits(unsigned value) : bits(value) {}
};

std::ostream& operator<<(std::ostream& os, const Bits& b)
{
    unsigned mask = 1 << (std::numeric_limits<unsigned>::digits - 1);

    while (mask)
    {
        os << ((b.bits & mask) != 0);
        mask >>= 1;
    }

    return os;
}

int main()
{
    unsigned num = 0xFFF0F0FF;

    std::cout << Bits(num) << '\n';
    std::cout << Bits(ReverseBits(num)) << '\n';
}
Success #stdin #stdout 0s 3340KB
stdin
Standard input is empty
stdout
11111111111100001111000011111111
11111111000011110000111111111111