浮点数格式及相关实验

一.浮点数与IEEE 754

浮点数可以表示成:

[-](-1)S(d0.d1d2…)bE

浮点数的二进制格式由两部分组成。一是尾数部分,就是上式中的[-](-1)S(d0.d1d2…),其次是指数部分,就是上式中的bE

[-]表示这个负号是可选的。早期的机器数,符号位S1表示正数,0表示负数。要加上这个负号。后来发现,如果反过来,以0表示正数,计算会方便得多。现在的机器都是这样,就没有这个负号。

浮点数与科学记数法相似,同样大小的一个数,可以有无数种表示(尾数小一点指数大一点,或相反)。这会造成精度损失。譬如,1011101110111011×2216位精度,可是如果把它表示成0000000000000001×217,就只有1位精度了。为此,定义了一种归一化小数,使尾数的绝对值符合归一化规范。常见的归一化小数有两种:

0.1d1d2

1.d1d2dp

IEEE 754采用第二种。由于其整数恒为1,就不为它安排存储位了。

尾数归一化后,每个浮点数的表示就是唯一了。

为了解决负数问题,尾数可以采取原码、反码、补码三种编码之一。

对于现在的大多数CPU来说,指数部分的底都是2。以前也有1016IBM S/370就是16)。

显然,为了使浮点数能以给定的精度表示给定范围内的任意值,各段(同一指数为一段)之间既不脱节也不重叠,尾数绝对值的最大值与最小值之比应等于指数的底。譬如,若底是2,则尾数在[1, 2]区间能满足上述要求。

指数E一般是整数。现在多采用移码来解决负数问题。所谓移码,就是加上一个数,使范围移至全正数区域。譬如,指数为-128~127,全部加128,变成移码就是0-255

下面以IEEE 754为例,说明浮点数的一些基础知识。

原始的IEEE 754定义了两种浮点数:singledouble。下面以single(相当于C里的float)为例,说明该标准的格式(括号内的是double的属性)。

3264)位长。b31 b63)是尾数的符号位,0为正。b30~b23 b62~b52)是表示指数的移码。加权值是127

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值