#include <cstdio>
#include <cstdint>
struct test16 {
uint16_t x:12;
uint16_t y:12;
};
struct test32 {
uint32_t x:12;
uint32_t y:12;
};
int main() {
test16 t16; t16.x=0xABC; t16.y=0xDEF;
test32 t32; t32.x=0x123; t32.y=0x456;
printf("%u %u\n", sizeof (test16), sizeof (test32));
printf("%0.3X %0.3X %0.8X\n", t16.x, t16.y, t16);
printf("%0.3X %0.3X %0.8X\n", t32.x, t32.y, t32);
return 0;
}
I2luY2x1ZGUgPGNzdGRpbz4KI2luY2x1ZGUgPGNzdGRpbnQ+CgpzdHJ1Y3QgdGVzdDE2IHsKICAgIHVpbnQxNl90IHg6MTI7CiAgICB1aW50MTZfdCB5OjEyOwp9OwoKc3RydWN0IHRlc3QzMiB7CiAgICB1aW50MzJfdCB4OjEyOwogICAgdWludDMyX3QgeToxMjsKfTsKCmludCBtYWluKCkgewoJdGVzdDE2IHQxNjsgICB0MTYueD0weEFCQzsgICAgdDE2Lnk9MHhERUY7Cgl0ZXN0MzIgdDMyOyAgIHQzMi54PTB4MTIzOyAgICB0MzIueT0weDQ1NjsKCQoJcHJpbnRmKCIldSAldVxuIiwgc2l6ZW9mICh0ZXN0MTYpLCBzaXplb2YgKHRlc3QzMikpOwoJcHJpbnRmKCIlMC4zWCAlMC4zWCAlMC44WFxuIiwgdDE2LngsIHQxNi55LCB0MTYpOwoJcHJpbnRmKCIlMC4zWCAlMC4zWCAlMC44WFxuIiwgdDMyLngsIHQzMi55LCB0MzIpOwoJcmV0dXJuIDA7Cn0=