基数、尾数、阶码、精度、范围、规格化、单精度浮点数((32bit)、双精度浮点数((64bit)、IEEE754 讲解

        在本个内容中我们会进行基数、尾数、阶码、精度、范围、规格化、单精度浮点数((32bit)、双精度浮点数((64bit)、IEEE754 讲解的相关内容讲解,本文参考于吴迪副教授的资料,浙江大学华中科技大学课程所著

一、定点表示

        既然需要引入浮点数,那么更多的问题是:

        浮点数能够模拟数轴上连续的小数吗?精度?

        浮点表示的格式是什么?

        尾数和阶码的基值必须是 2 吗?基值的影响?

        数的范围与精度和哪些因素有关?

        为什么要引入规格化表示?

        目前浮点数表示格式的标准是什么?

(复习内容)回忆定点数:下面,公式要写在笔记上,用作后面举例计算【浮点数精度】的讲解依据

二、浮点表示的定义和范围

CLAIM(1:基数为 2 时,数位右/左移几位,阶码就加/减几;反过来也一样。)

以下内容要抄在笔记上,随时查看。

        阶码——其位数决定数据表示的范围,阶码的位数越多,能表示的数据范围也就越大;而阶码的 值和阶符共同决定了小数点的位置(注意对照观察右边的具体例子)

        尾数——尾数的尾数决定了数据表示的精度(数轴上的最小刻度)。阶码长度相同的时候,分配 给尾数的数位越多,数据的精度就越高。

         注意:E 为定点整数,M 为定点小数。我们之前学过的定点数的表示方法,在这里得到了应用。

         这里的【浮点数格式框图】要画在黑板上,用作后面举例计算【浮点数精度】的讲解依据

E——阶码部分,假设用 4 位数位(k=4)表示,一共是 5 位,还有 1 位符号位

M——尾数部分,设用 10 位数位(n=10)表示,一共 11 位,其中 1 位是符号位

        这样,一共便是 16 位,我们的机器假设就是 16 位的机器,一共能表示的二进制数的个数就是 2 16 个,如果我们的机器用这个格式来表示浮点数的话,也就是用 2 16 个数来表示最小负数和最大正数之 间的所有的数。而 2 16也就是 6 万多个数,实际上是用有限的数据,来表示无限的实数。

        根据【笔记上画的浮点数框图、和浮点数公式】,我们来计算最小、最大负数;对于最小、最大 正数的计算,大家自行思考。(【注意:这里所有的计算是用原码表示的】((如果是补码表示 的,可以根据补码的公式得到) 

      

2^{10}

问 1:在 k=4,n=10 时,浮点数的精度是多少?正数的范围是从多少到多少?

        答:精度(最小刻度):0.00(0000(0001; 范围:正数从 0.00(0000(0001×2 -15→0.11( 1111(1111×2 15,最小数接近 0,最大的数接近 32768。

问 2:从 0.00(0000(0001×2^{-15})到 0.11(1111(1111×2^{-15}),一共有多少个数?

        答:2^{10} -1 个

问 3:一共有多少个正数?(原码)

        答:阶码从-15→+15 共 31 个,每个阶码对应了(2^{10}-1)个尾数,31×(2^{10} -1)≈31000 个。

CLAIM 3: 浮点数的精度和尾数的位数有关,尾数的位数越多,精度越高;

                   浮点数的范围与阶码的位数有关,阶码的位数越多,范围越大。

上溢出时:浮点运算器的溢出标记位设置为 1。

下溢出 时:由于绝对值很小,则按照机器 0 处理。

精度溢出:浮点数确实在“正数区”和“负数区”,但是不在某个刻度上的时候,此时只能做(“ 舍入”((近似数)处理。比如:0.00 0000 1101 101×2^{-9},在 0.00 0000 1101×2 -9 与 0.00 0000 1110×2^{-9}之间。 

三、浮点表示的规格化

四、IEEE(754 标准

为什么需要浮点数表示的标准?

        答:虽然我们定义了浮点数的存储方式,优化了浮点数的存储(规格化),但是浮点数的一般格 式没有规定①数的位数②机器码的形式:原、补、反?所以,如果看成不同的机器码,则对应的真值 都不同,便不是一个数。

        IEEE754 规定:阶码用移码表示。为什么要采用移码?这主要是为了让阶码的值成为非负,便于 浮点数的比较和排序。让我们复习移码,查看【移码的表格】

        对于单精度浮点数,本来的阶码 E: 1,1111111→0,1111111 即:-127→+127

        为了方便,使得阶码最低位等于 0,所以需要+127(偏移量):

         现在+127 移码后:0→+254, 即:现在的 E(移码)0→254。

         规格化的方式:最高位为“1”是隐含的:即(【尾数】的第一位固定为 1,那么,我们就可以少 存储一位,即【隐含】掉,也就是说,表示的时候不表示(存储的时候不存储),计算的时候补上它 就可以了,这样的话,实际上是增加了尾数,从而增加了数据表示的精度。 

        另外,需要指出的是:与之前的浮点表示类似,规格化浮点数在数轴上的刻度分布不是均匀的, 因为同样的道理,指数每加 1,数的数值就扩大为原来的 2 倍,而此范围内包含的数的个数与扩大之 前是一样的,所以,刻度只会越来越稀疏。

CLAIM 4: 偏移量越大,则规格化数的范围越小、非规格化数的精度越高。

 

 

        我们要认识到,这样的误差会导致严重的后果,特别是那些对误差极其敏感的情况(火箭发射、 金融计算),好在 2008 年 IEEE 754 标准进行了修订,引入了十进制浮点数——DFP 编码,

        最后,我们来学习一个例子。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值