#include <stdio.h>
union {
unsigned int uivalue;
float fvalue;
} val_union;
void printBits(unsigned int num)
{
int bit_cnt = sizeof(unsigned int) * 8;
unsigned int mask = (1 << (bit_cnt - 1));
do
{
printf("%u", (num
& mask
) != 0?1:0); mask >>= 1;
} while (mask > 0);
}
int main(void) {
val_union.fvalue = 1.0f/3;
printf("1/3 jako float: %f\n", val_union.
fvalue); printf("1/3 jako unsigned int: %u\n", val_union.
uivalue); printf("1/3 jako unsigned int hex: %08x\n", val_union.
uivalue); printBits(val_union.uivalue);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+Cgp1bmlvbiB7CiAgICB1bnNpZ25lZCBpbnQgICB1aXZhbHVlOwogICAgZmxvYXQgZnZhbHVlOwp9IHZhbF91bmlvbjsKCnZvaWQgcHJpbnRCaXRzKHVuc2lnbmVkIGludCBudW0pCnsKICAgaW50IGJpdF9jbnQgPSBzaXplb2YodW5zaWduZWQgaW50KSAqIDg7CiAgIHVuc2lnbmVkIGludCBtYXNrID0gKDEgPDwgKGJpdF9jbnQgLSAxKSk7CgogICBkbwogICB7CiAgICAgIHByaW50ZigiJXUiLCAobnVtICYgbWFzaykgIT0gMD8xOjApOwogICAgICBtYXNrID4+PSAxOwogICB9IHdoaWxlIChtYXNrID4gMCk7Cn0KCmludCBtYWluKHZvaWQpIHsKCSAKCXZhbF91bmlvbi5mdmFsdWUgPSAxLjBmLzM7CglwcmludGYoIjEvMyBqYWtvIGZsb2F0OiAlZlxuIiwgdmFsX3VuaW9uLmZ2YWx1ZSk7CglwcmludGYoIjEvMyBqYWtvIHVuc2lnbmVkIGludDogJXVcbiIsIHZhbF91bmlvbi51aXZhbHVlKTsKCXByaW50ZigiMS8zIGpha28gdW5zaWduZWQgaW50IGhleDogJTA4eFxuIiwgdmFsX3VuaW9uLnVpdmFsdWUpOwoJcHJpbnRmKCIxLzMgamFrbyBiaXR5OiAiKTsKCXByaW50Qml0cyh2YWxfdW5pb24udWl2YWx1ZSk7CglwcmludGYoIlxuIik7CiAgICByZXR1cm4gMDsKfQo=