c语言位变量定义

Python013

c语言位变量定义,第1张

在c语言中定义bit型变量,可以使用位域来自定义。

位域的定义和位域变量的说明位域定义与结构定义相仿,其形式为:

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

}