#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';
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bGltaXRzPgojaW5jbHVkZSA8aW9tYW5pcD4KCnRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19pbnRlZ3JhbDxUPjo6dmFsdWU+Ojp0eXBlLCBjbGFzcyA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPCFzdGQ6OmlzX3NpZ25lZDxUPjo6dmFsdWU+Ojp0eXBlPgpUIHJldmJpdHMoVCBpbikKewogICAgVCByZXN1bHQgPSAwOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjpkaWdpdHM7IGkrKykKICAgIHsKICAgICAgICByZXN1bHQgPDw9IDE7CgkJcmVzdWx0IHw9IGluICYgMTsKCQlpbiA+Pj0gMTsKCX0KCXJldHVybiByZXN1bHQ7Cn0KCmludCBtYWluKCkKewogICAgdW5zaWduZWQgc2hvcnQgaW4gPSAweDExMDE7CiAgICBzdGQ6OmNvdXQgPDwgc3RkOjpoZXggPDwgc3RkOjpzaG93YmFzZSA8PCBpbiA8PCAnXG4nOwoJc3RkOjpjb3V0IDw8IHJldmJpdHMoaW4pIDw8ICdcbic7Cn0K