[408计算机组成原理] 第二章 数据的表示和运算 2.2

在这里插入图片描述

回顾

在前面的小结,主要了解的无符号数和有符号数,对于有符号数的机器数的表示改如何表示,即引入原码的概念,为了实现减法运算,进一步引入补的概念,即学习了补码表示,以及求补码过程中需要用到的反码,又由于其补码表示数据不能很好的看出其真值的大小,引入移码的概念;需要掌握原码,反码,补码,移码的求法,以及各种表示所能表示的范围,小数以及整数的范围,同时需要注意,移码只能表示整数

二、定点表示和浮点表示

定点表示,我们在前一节其实已经大概的了解过了,就是小数固定在机器的某个位置,对于整数和小数,分别固定小数点的位置。需要明确的一点是,小数点并不会在实际的计算机中存储,而是会被隐含在机器中的固定位置。

2.1定点表示

①整数定点机

整数定点机只用于表示整数,其小数点默认在数的最后面

符号位数值部分小数点
x 0 x_0 x0 x 1 x_1 x1 x 2 x_2 x2 x 3 x_3 x3 x 4 x_4 x4 x n x_n xn.(小数点隐含在此位置)

②小数定点机

小数定点机其小数点默认在符号位的后面

符号位小数点小数部分
x 0 x_0 x0.(小数点隐含在此位置) x 1 x_1 x1 x 2 x_2 x2 x 3 x_3 x3 x 4 x_4 x4 x n x_n xn

显然定点表示数字是很有缺陷的,在定点机中,由于小数点固定其存储数据的时候十分的不方便,小数只能存储在小数定点中,整数只能存储在整数定点机中,十分的不方便,因此引入了浮点表示,让小数点的位置可以浮动,这样就可以将小数表示和整数表示统一起来。接下去我们一起看浮点表示。

2.2浮点表示

浮点表示一句话了解就是,再表示数据的时候,小数点可以浮动表示,和我们之前学过的科学计数法非常的类似,比如小数 0.00098 0.00098 0.00098使用科学计数法就可以表示位 0.98 ∗ 1 0 − 3 0.98*10^{-3} 0.98103,这样我们在存储的时候,将小数部分 0.98 0.98 0.98和阶码 − 3 -3 3分开存储,这样就可以很好的将整数和小数统一起来,例如12.13就可以表示为 0.1213 ∗ 1 0 2 0.1213*10^{2} 0.1213102

①浮点表示的形式

具体来看一下浮点表示的具体形式,以32位的为例。

符号位阶码尾数
1位7位24位

如上格式所示,其实就是将我们使用科学计数法的表示的数据,将其科学计数法表示的阶码写入阶码的部分,将尾数部分写入尾数部分,符号写入符号位,当然对于阶码来说,也是需要符号位的,所以7位用于表示阶数,其中一位表示阶码的符号位,6位表示阶码的数值部分,所以精确的形式,如下所示

在这里插入图片描述

  • 阶码部分:阶符+阶码本身的真值
  • 尾数部分:符号+尾数本身的真值

②浮点表示的范围

由于计算机寄存器的个数有限,所能表示的数值的位数也会有限,所以存在一个所能表示的范围。

在这里插入图片描述

  • 最小的负数: − ( 1 − 2 − 23 ) ∗ 2 2 7 − 1 -(1-2^{-23})*2^{2^7-1} (1223)2271 如何理解呢?要求最下的负数,其实就是要求绝对值最下的数,然后加上一个符号就可以,要绝对值最小的数;要求绝对值最小的数,我们先求最小的小数,就是0.00…01,即为 1 − 2 − 23 1-2^{-23} 1223,进一步要让数值最小,就是要让阶码也最小,即为 − ( 2 7 − 1 ) -(2^7-1) (271),所以最小为 ( 1 − 2 − 23 ) ∗ 2 − ( 2 7 − 1 ) (1-2^{-23})*2^{-(2^7-1)} (1223)2(271)
  • 最大的负数: − ( 2 − 23 ) ∗ 2 − ( 2 7 − 1 ) -(2^{-23})*2^{-(2^7-1)} (223)2(271)
  • 最小的正数: 2 − 23 ∗ 2 − ( 2 7 − 1 ) 2^{-23}*2^{-(2^7-1)} 2232(271)
  • 最大的正数: ( 1 − 2 − 23 ) ∗ 2 2 7 − 1 (1-2^{-23})*2^{2^7-1} (1223)2271

③浮点数的规格化

为什么要进行规格化呢?因为在使用浮点数表示数据中如0.00…1,这种就很没必要,因为我们都是先将数据写为科学计数法的形式来表示,为什么就不能变成0.1然后减小阶码呢?而且这样还可以进一步提高数据的精度;例如数据0.00111,假设只能保存四位数据,不规格化的话,存储就是0.0011,必然会舍弃掉不能表示的位数,若进行规格化变为0.1110,然后减小阶码的值,这样即能不损失精度,还能很好的表示数字。

规格化的规则,就是要求小数部分的数据必须是大于或者等于0.5的,按着二进制来说,就是要求小数的数据第一位必须是1,即为0.XXXXX…的形式。

这就是浮点数表示的规格化表示。

2.3 IEEE754标准

这是进一步对浮点数据进行规格化表示, IEEE754标准规定在计算机中存储的数据,其阶码采用移码表示,其小数部分采用原码表示,同时在IEEE754标准中有两种表示小数的格式,一种是双精度类型,一种是单精度类型。

在这里插入图片描述

  • 单精度类型:其占32位,8位的阶码,24位的尾数(该尾数包含符号位)
  • 双精度类型:其占64位,11位的阶码位,53位的尾数(该尾数包含符号位)

同时为了进一步提高数据在计算中表示的精度问题,由于在浮点数规格化的表示中,其尾数的最高位是1,那么这样的化,就进一步将其1隐含表示,例如尾数为0.101,在IEEE754标准中,1要隐含表示,即变为0.01,将1隐含表示,进一步提高了数据表示的精度。

需要注意的是,在IEEE754标准中阶码全0和全1,有其他的作用,此时就不再表示数据了,我们先来看32位的单精度的浮点数,8位阶码总共可以表示的范围是 − 128  至  127 -128 ~ 至 ~ 127 128  127,因为对于正0和负0,其补码都是全零变位移码就是1后面全零,将 − 128  至  127 -128 ~ 至 ~ 127 128  127将其变为移码来说就是 0 至 255 0至255 0255,但是由于移码的全1和全0留用,也就是移码0和移码255被留用,实际的其真值的范围就变为 − 127 至 126 -127至126 127126,由于 留用了全0和全1,所以对于IEEE754标准求解移码的时候其移码的偏移是127,即是 2 7 − 1 2^7-1 271,而不再是 2 7 2^7 27。在双精度中同样留用全0和全1,所以其64位的双精度的移码偏移为 2 10 − 1 2^{10}-1 2101,而不是 2 10 2^{10} 210

在这里插入图片描述

如上图所示,定义了阶码全零或全1和尾数全零或全1,其表示的意思分别是啥,其实记忆起立很简单,全零就真的是零,之不过有正零和负零之分;全1,表示做大了,不可能再大了,就是无穷,也就是区分正无穷和负无穷。

在这里插入图片描述

  • 对于阶码全0而尾数不为零来说,是非规格化的尾数,其实是为了提高精度的一种做法,这里可以理解以下。
  • 对于阶码全1而尾数不为零来说,是非数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值