#include <iostream>
#include <limits>
#include <iomanip>

template<class T, class = typename std::enable_if<std::is_integral<T>::value>::type, class = typename std::enable_if<!std::is_signed<T>::value>::type>
T revbits(T in)
{
    T result = 0;
    for (int i = 0; i < std::numeric_limits<T>::digits; i++)
    {
        result <<= 1;
		result |= in & 1;
		in >>= 1;
	}
	return result;
}

int main()
{
    unsigned short in = 0x1101;
    std::cout << std::hex << std::showbase << in << '\n';
	std::cout << revbits(in) << '\n';
}
