位域的定义和位域变量的说明位域定义与结构定义相仿,其形式为:
struct 位域结构名
{ 位域列表 }
其中位域列表的形式为: 类型说明符 位域名:位域长度
示例:通过位域来计算IEEE754浮点数标准中,单精度浮点数的最大值、最小值以及最小弱规范数。
#include <stdio.h>
typedef struct FP_SINGLE
{
unsigned __int32 fraction : 23
unsigned __int32 exp : 8
unsigned __int32 sign : 1
} fp_single
int main()
{
float x
fp_single * fp_s = (fp_single *)&x
fp_s->sign = 0
fp_s->exp = 0xfe
fp_s->fraction = 0x7fffff
printf ("float 最大数: %le\n",(double)x)
fp_s->sign = 0
fp_s->exp = 0x1
fp_s->fraction = 0x0
printf ("float 最小数: %le\n",(double)x)
fp_s->sign = 0
fp_s->exp = 0
fp_s->fraction = 0x1
printf ("float 最小弱规范数:%le\n\n",(double)x)
return 0
}
1、在c语言中定义bit型变量,可以使用位域来自定义。
位域的定义和位域变量的说明位域定义与结构定义相仿,其形式为:
struct 位域结构名
{ 位域列表 }
其中位域列表的形式为: 类型说明符 位域名:位域长度
2、示例:通过位域来计算IEEE754浮点数标准中,单精度浮点数的最大值、最小值以及最小弱规范数。
#include <stdio.h>typedef struct FP_SINGLE
{
unsigned __int32 fraction : 23
unsigned __int32 exp : 8
unsigned __int32 sign : 1
} fp_single
int main()
{
float x
fp_single * fp_s = (fp_single *)&x
fp_s->sign = 0
fp_s->exp = 0xfe
fp_s->fraction = 0x7fffff
printf ("float 最大数: %le\n",(double)x)
fp_s->sign = 0
fp_s->exp = 0x1
fp_s->fraction = 0x0
printf ("float 最小数: %le\n",(double)x)
fp_s->sign = 0
fp_s->exp = 0
fp_s->fraction = 0x1
printf ("float 最小弱规范数:%le\n\n",(double)x)
return 0
}