用c语言验证浮点数的格式,浮点数的二进制存储形式及c语言验证

我们经常听说浮点数,其实浮点数是和定点数对应的。定点数就是小数点固定的数,而且他的小数点在最右边,所以定点数用来表示整数。

浮点数表示方法允许小数点的浮动,一个浮点数分为三个部分:第一部分是符号,可以是正数可以是负数;第二部分是小数点应该左移或右移的位移量;第三部分是小数点位置固定的定点表示法。

下面介绍常用的IEEE标准定义的浮点数的标准。

c2a138391a7c63120d37616d4e16575a.gif

符号部分: 0表示正数 1表示负数

位移量部分:采用余127码表示。在余码系统中,正数和负数都用无符号数储存,而且可以保持原有的大小关系,只需要将所有的数字整体右移。即该部分看做无符号整数,127表示0 126表示-1 128表示1

尾数部分:是将某数字化为1.xxxxxxx * 2^n的形式后的xxxxxx部分.小数点和其左边的1并不存储。

浮点数的存储步骤:

1. 看符号位

2.将数字转化成二进制

3.将二进制规范化为 1.xxxxxxxx*2^n

4. 将n转化为指数(加上127) 尾数xxxx后面补零

5.写出

下面举几个例子:

5.75的二进制表示

1. 是正数,因此符号位为0

2. 十进制转化二进制 5.75 = 101.11(二进制)

3. 将二进制规范化:101.11 = 1.0111 * 2^2

指数部分为2  尾数部分为0111

4. 根据余127码 指数部分为 2+127 = 129 = 10000001(二进制) 尾数部分后面补零 01110000000000000000000

5. 表示如下

0 10000001 01110000000000000000000

-161.875的二进制表示

1. 符号位为1 (负数)

2.转化为二进制 161.875 = 10100001.111(二进制)

3.二进制规范化: 10100001.111 = 1.0100001111 * 2^7

4.指数部分E = 7+127 = 134 = 10000110(二进制) 尾数部分0100001111

5.表示如下

1 10000110 01000011110000000000000

1 10010100 00000000111000100001111表示为实数

1. 首位为1 是负数

2. 指数部分10010100 = 148    148-127 = 21

3. 尾数去规范化 1.00000000111000100001111

4.二进制为 1.00000000111000100001111 * 2^21

5. 十进制为2104378.75

6.该数字是 -2104378.75

c语言验证

c2a138391a7c63120d37616d4e16575a.gif

源代码如下

#include

int main(void)

{

float fnum = 1;

int i;

int * p = (int *)&fnum;

while (fnum != 0)

{

printf("input a num: ");

scanf("%f", &fnum);

for (i = 31; i >= 0; i--)

{

printf("%d", (*p & (1 << i) ? 1: 0));

}

printf("\n");

}

return 0;

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

#include

intmain(void)

{

floatfnum=1;

inti;

int*p=(int*)&fnum;

while(fnum!=0)

{

printf("input a num: ");

scanf("%f",&fnum);

for(i=31;i>=0;i--)

{

printf("%d",(*p&(1<

}

printf("\n");

}

return0;

}

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值