#include <stdio.h>
#include <stdint.h>
uint32_t flip(uint32_t n)
{
if (n == 0) return 0;
uint32_t mask = (uint32_t)~0 >> __builtin_clz(n);
return n ^ mask;
}
int main()
{
printf("%#x\n", flip
(0xaa55)); }
ICAgICNpbmNsdWRlIDxzdGRpby5oPgogICAgI2luY2x1ZGUgPHN0ZGludC5oPgoKICAgIHVpbnQzMl90IGZsaXAodWludDMyX3QgbikKICAgIHsKICAgICAgICBpZiAobiA9PSAwKSByZXR1cm4gMDsKICAgCiAgICAgICAgdWludDMyX3QgbWFzayA9ICh1aW50MzJfdCl+MCA+PiBfX2J1aWx0aW5fY2x6KG4pOwogICAgICAgIHJldHVybiBuIF4gbWFzazsKICAgIH0KCiAgICBpbnQgbWFpbigpCiAgICB7CiAgICAgICAgcHJpbnRmKCIlI3hcbiIsIGZsaXAoMHhhYTU1KSk7CiAgICB9Cg==