#include <cstdio>
struct test16 {
unsigned short x:12;
unsigned short y:12;
};
struct test32 {
unsigned x:12;
unsigned 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;
}
I2luY2x1ZGUgPGNzdGRpbz4KCnN0cnVjdCB0ZXN0MTYgewogICAgdW5zaWduZWQgc2hvcnQgeDoxMjsKICAgIHVuc2lnbmVkIHNob3J0IHk6MTI7Cn07CgpzdHJ1Y3QgdGVzdDMyIHsKICAgIHVuc2lnbmVkIHg6MTI7CiAgICB1bnNpZ25lZCB5OjEyOwp9OwoKaW50IG1haW4oKSB7Cgl0ZXN0MTYgdDE2OyAgIHQxNi54PTB4QUJDOyAgICB0MTYueT0weERFRjsKCXRlc3QzMiB0MzI7ICAgdDMyLng9MHgxMjM7ICAgIHQzMi55PTB4NDU2OwoJCglwcmludGYoIiV1ICV1XG4iLCBzaXplb2YgKHRlc3QxNiksIHNpemVvZiAodGVzdDMyKSk7CglwcmludGYoIiUwLjNYICUwLjNYICUwLjhYXG4iLCB0MTYueCwgdDE2LnksIHQxNik7CglwcmludGYoIiUwLjNYICUwLjNYICUwLjhYXG4iLCB0MzIueCwgdDMyLnksIHQzMik7CglyZXR1cm4gMDsKfQ==