1234567891011
unsigned int ReverseBits( unsigned int x ) { unsigned int y = 0; for ( int n = std::numeric_limits<unsigned int>::digits - 1; x; x >>= 1, --n ) { if ( x & 1 ) y |= 1 << n; } return y; }