#include <stdio.h>
#pragma pack (push, 1)
typedef union FLOAT_VIEW
{
float number;
struct
{
unsigned sign : 1;
unsigned order : 8;
unsigned mantiss : 23;
} view;
} FLOAT_VIEW;
typedef union DOUBLE_VIEW
{
double number;
struct
{
unsigned long long sign : 1;
unsigned long long order : 11;
unsigned long long mantiss : 52;
} view;
} DOUBLE_VIEW;
#pragma pack (pop)
void main()
{
printf("sizeof(FLOAT_VIEW) = %d\n", sizeof(FLOAT_VIEW
)); printf("sizeof(DOUBLE_VIEW) = %d", sizeof(DOUBLE_VIEW
)); }
I2luY2x1ZGUgPHN0ZGlvLmg+CiAKI3ByYWdtYSBwYWNrIChwdXNoLCAxKQp0eXBlZGVmIHVuaW9uIEZMT0FUX1ZJRVcKewogICAgZmxvYXQgbnVtYmVyOwogCiAgICBzdHJ1Y3QKICAgIHsKICAgICAgICB1bnNpZ25lZCBzaWduIDogMTsKICAgICAgICB1bnNpZ25lZCBvcmRlciA6IDg7CiAgICAgICAgdW5zaWduZWQgbWFudGlzcyA6IDIzOwogICAgfSB2aWV3Owp9IEZMT0FUX1ZJRVc7CiAKdHlwZWRlZiB1bmlvbiBET1VCTEVfVklFVwp7CiAgICBkb3VibGUgbnVtYmVyOwogCiAgICBzdHJ1Y3QKICAgIHsKICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgc2lnbiA6IDE7CiAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIG9yZGVyIDogMTE7CiAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIG1hbnRpc3MgOiA1MjsKICAgIH0gdmlldzsKfSBET1VCTEVfVklFVzsKI3ByYWdtYSBwYWNrIChwb3ApCiAKdm9pZCBtYWluKCkKewogICAgcHJpbnRmKCJzaXplb2YoRkxPQVRfVklFVykgPSAlZFxuIiwgc2l6ZW9mKEZMT0FUX1ZJRVcpKTsKICAgIHByaW50Zigic2l6ZW9mKERPVUJMRV9WSUVXKSA9ICVkIiwgc2l6ZW9mKERPVUJMRV9WSUVXKSk7Cn0=