#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));
}