计组之数据运算:9、浮点数的表示

思维导图

在这里插入图片描述

定点数存在的问题:(浮点数产生的原因)

当我们要存储一个数值时,需要考虑到数值的大小问题;例如,当存储一个156时用char型即可,存储8500时,用short型即可;但是当一个数值非常非常的大时,要怎么进行存储呢?例如我们要存储2亿亿亿亿这么大一个数,采用定点数的方式存储就会产生问题。因此产生了浮点数。(浮点数的表示类似与科学计数法)

浮点数的表示格式

浮点数与科学计数法的比较

先来看一下十进制的科学计数法
在这里插入图片描述

+3.026*10^11是十进制的科学计数法,他可以拆分成5部分:
1、数值的符号:即第一个正号,又称数符
2、数值的大小:3.026,又称尾数
3、阶码的数值:11
4、阶码的底数:10(对于科学计数法为10,对于浮点数来说就为2,一般没有特别说明是默认的,所以在存储表示中不需要存储)
5、阶数的符号:即11前面隐含的正号,又称阶符

所以,在对科学计数法进行存储时,需要存储的有四部分:阶符、阶码的数值、数符、尾数

类比与科学计数法,浮点数的存储与其不同之处就在于阶码的底数,而在浮点数存储中,默认为2^i,无特别说明为2

浮点数的格式

在这里插入图片描述

阶码:反映了浮点数的表示范围及小数点的实际位置
尾数的数值部分位数:反映了浮点数的精度

浮点数与真值的转化

在这里插入图片描述在这里插入图片描述

存在的问题

对于上图中求真值b的过程中,无法用1B的存储空间进行存储(需要9位),这样会舍弃最低位的1,结果会造成精度的丢失。所以,我们如何利用尽可能小的存储空间存储尽可能大的数值呢?因此产生了规格化的概念。

规格化

科学计数法的规格化

我们都知道,科学计数法要求小数点在数值的第一个有效位的后面;例如,我们表示235000,会写成2.35x105而不会写成235x103;这样的规定就是科学计数法的规格化

浮点数的规格化方法

类比与科学计数法的规格化,规定尾数的最高位数值必须是一个有效值。
在这里插入图片描述
eg:
在这里插入图片描述

对于上文提到的求b的真值的过程,我们可以通过左规操作使b规格化,结果是可以用1B的存储空间进行存储(8位,上文中未左规9位)

浮点数规格化特点

在这里插入图片描述

俩个规格化的浮点数的加减操作:

阶数:补码,位数:原码
a:00,010;00,0110
b:00,011;00,0101
1、求a,b真值

a:阶数:2,尾数6,真值:6x22
b:阶数:3,尾数5,真值:5x23

2、求a+b的值

1、求阶差:011-010=001,阶差为1
2、补阶差:将阶数小的与阶数大的对齐,并进行移位保证a的数值不变
a:00,011;00,0011
3、尾数运算:0011+0101=1000
4、得出结果:a+b:00,011;00,1000
5、规格化:此结果以规格化;若非规格化则需要通过左规与右规进行规格化

待解决问题:

阶码、尾数用什么码合适?用多少位合适?如何定义一个标准可以进行不同计算机浮点数的通讯?见下篇博客:IEEE754标准

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值