#include <cstdint>
#include <bitset>
#include <iostream>
template<class T>
auto as_unsigned(T t)
{
return std::make_unsigned_t<T>(t);
}
int main(int argc, char** argv)
{
auto sx = int32_t{ -55 };
auto ux = as_unsigned(sx);
auto sxBits = std::bitset<sizeof(sx) * 8>(sx);
auto uxBits = std::bitset<sizeof(ux) * 8>(ux);
std::cout << "sx = " << sx << std::endl;
std::cout << "sx bits: " << sxBits << std::endl;
std::cout << "ux = " << ux << std::endl;
std::cout << "ux bits: " << uxBits << std::endl;
return 0;
}
I2luY2x1ZGUgPGNzdGRpbnQ+CiNpbmNsdWRlIDxiaXRzZXQ+CiNpbmNsdWRlIDxpb3N0cmVhbT4KCnRlbXBsYXRlPGNsYXNzIFQ+IAphdXRvIGFzX3Vuc2lnbmVkKFQgdCkgCnsgCiAgICByZXR1cm4gc3RkOjptYWtlX3Vuc2lnbmVkX3Q8VD4odCk7IAp9CgppbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIAp7CiAgICBhdXRvIHN4ID0gaW50MzJfdHsgLTU1IH07CiAgICBhdXRvIHV4ID0gYXNfdW5zaWduZWQoc3gpOwoKICAgIGF1dG8gc3hCaXRzID0gc3RkOjpiaXRzZXQ8c2l6ZW9mKHN4KSAqIDg+KHN4KTsKICAgIGF1dG8gdXhCaXRzID0gc3RkOjpiaXRzZXQ8c2l6ZW9mKHV4KSAqIDg+KHV4KTsKCiAgICBzdGQ6OmNvdXQgPDwgInN4ID0gIiA8PCBzeCA8PCBzdGQ6OmVuZGw7CiAgICBzdGQ6OmNvdXQgPDwgInN4IGJpdHM6ICIgPDwgc3hCaXRzIDw8IHN0ZDo6ZW5kbDsKCiAgICBzdGQ6OmNvdXQgPDwgInV4ID0gIiA8PCB1eCA8PCBzdGQ6OmVuZGw7CiAgICBzdGQ6OmNvdXQgPDwgInV4IGJpdHM6ICIgPDwgdXhCaXRzIDw8IHN0ZDo6ZW5kbDsKICAgIAogICAgcmV0dXJuIDA7Cn0=