计算机组成原理 第五章(计算机的运算方法)—第二节(数的定点表示和浮点表示)

写在前面:

  1. 本系列笔记主要以《计算机组成原理(唐朔飞)》为参考,大部分内容出于此书,笔者的工作主要是挑其重点展示,另外配合下方视频链接的教程展开思路,在笔记中一些比较难懂的地方加以自己的一点点理解(重点基本都会有标注,没有任何标注的难懂文字应该是笔者因为强迫症而加进来的,可选择性地忽略)。
  2. 视频链接:计算机组成原理(哈工大刘宏伟)135讲(全)高清_哔哩哔哩_bilibili

一、定点表示

1、定点表示的形式和表示范围

        小数固定在某一位置的数为定点数,有如下两种形式。

        当小数点位于数符和第一数值位之间时,机器内的数为纯小数;当小数点位于数值位之后时,机器内的数为纯整数。

        采用定点数的机器称为定点机。数值部分的位数n决定了定点机中数的表示范围,若机器数采用原码(反码的表示范围同原码),那么小数定点机(上左图所示)中数的表示范围是-(1-2^{-n})\sim (1-2^{-n}),整数定点机(上右图所示)中数的表示范围是-(2^{n}-1)\sim (2^{n}-1);若机器数采用补码,那么小数定点机中数的表示范围是-1\sim (1-2^{-n}),整数定点机中数的表示范围是-2^{n}\sim (2^{n}-1)

2、定点表示的局限(引入浮点表示的原因)

(1)编程困难,程序员要调节小数点的位置。

(2)数据存储单元的利用率往往很低。

(3)数的表示范围很小,为了能表示两个相差很大的数据,需要很长的机器字长。

二、浮点表示

1、浮点数的表示形式

(1)实际上计算机中处理的数不一定是纯小数或纯整数(如圆周率),而且有些数据的数值范围相差很大(如电子的质量和太阳的质量),它们都不能直接用定点小数或定点整数表示,但均可用浮点数表示,浮点数即小数点的位置可以浮动的数

(2)通常,浮点数被表示成N=S\times r^{j},式中S为尾数、j为阶码、r是基数。以基数r=2为例,数N可写成不同的形式。

(3)浮点数在机器中的形式如下所示:

①阶码是整数,可正可负,阶符和阶码的位数m合起来反映浮点数的表示范围及小数点的实际位置

②尾数是小数,可正可负,其位数n反映了浮点数的精度,尾数的符号S_{f}代表浮点数的正负

③基数又称基值,在计算机中可取2、4、8或16等。

2、浮点数的表示范围

        以通式N=S\times r^{j}为例,设浮点数阶码的数值位取m位,尾数的数值位取n位,当浮点数为非规格化数时,它在数轴上的表示范围如下图所示。

        

        当浮点数阶码大于最大阶码时,称为上溢,此时机器停止运算,进行中断溢出处理;当浮点数阶码小于最小阶码时,称为下溢,此时溢出的数绝对值很小,通常将尾数各位强置为零,按机器零处理,此时机器可以继续运行

        一旦浮点数的位数确定后,合理分配阶码和尾数的位数将直接影响浮点数的表示范围和精度。通常对于短实数(总位数为32位),阶码取8位(含阶符1位),尾数取24位(含数符1位);对于长实数(总位数为64位),阶码取1位(含阶符1位),尾数取53位(含数符1位);对于临时实数(总位数为80位),阶码取15位(含阶符1位),尾数取65位(含数符1位)。

3、浮点数的规格化

(1)为了提高数据精度以及便于浮点数的比较,在计算机中规定浮点数的尾数用纯小数形式(也就是整数部分为零,表示为“0.xxx…”)。此外,将尾数最高位为1的浮点数(表示为“0.1xxx…”)称为规格化数,浮点数表示成规格化形式后,其精度最高。

(2)为了提高浮点数的精度,其尾数必须为规格化数,如果不是规格化数就要通过修改阶码并同时左右移尾数的办法(其实就是移动小数点),使其变成规格化数。

(3)将非规格化数转换成规格化数的过程称为规格化,对于基数不同的浮点数,因其规格化数的形式不同,规格化过程也不同当基数为2时,尾数最高位为1的数为规格化数。规格化时,尾数左移1位,阶码减1(这种规格化称为向左规格化,简称左规);尾数右移1位,阶码加1(这种规格化称为向右规格化,简称右规

基数

规格化方向

具体操作

r=2

左规

尾数左移1位,阶码减1

右规

尾数右移1位,阶码加1

r=4

左规

尾数左移2位,阶码减1

右规

尾数右移2位,阶码加1

r=8

左规

尾数左移3位,阶码减1

右规

尾数右移3位,阶码加1

r=16

左规

尾数左移4位,阶码减1

右规

尾数右移4位,阶码加1

r=2^{n}

左规

尾数左移n位,阶码减1

右规

尾数右移n位,阶码加1

(4)浮点机中一旦基数确定后就不再变了,而且基数是隐含的,故不同基数的浮点数表示形式完全相同。但基数不同,对数的表示范围和精度等都有影响,一般来说,基数r越大,可表示的浮点数范围越大,而且所表示的数的个数越多,但r越大,浮点数的精度反而会下降

三、定点数和浮点数的比较

①当浮点机和定点机中数的位数相同时,浮点数的表示范围比定点数的大得多。

②当浮点数为规格化数时,其相对精度远比定点数高。

③浮点数运算要分阶码部分和尾数部分,而且运算结果都要求规格化,故浮点运算步骤比定点运算步骤多,运算速度比定点运算的低,运算线路比定点运算的复杂。

④在溢出的判断方法上,浮点数是对规格化数的阶码进行判断,而定点数是对数值本身进行判断。例如,小数定点机中的数,其绝对值必须小于1,否则“溢出”,此时要求机器停止运算,进行处理,为了防止溢出,上机前必须选择比例因子,这个工作比较麻烦,给编程带来不便;而浮点数的表示范围远比定点数大,仅当“上溢”时机器才停止运算,故一般不必考虑比例因子的选择。

四、机器零

当一个浮点数的尾数为0时,不论其阶码为何值,或这个浮点数的阶码等于或小于它所能表示的最小数时,不管其尾数为何值,机器都把该浮点数作为零看待,并称之为“机器零。如果浮点数的阶码用移码表示,尾数用补码表示,则当阶码为它所能表示的最小数2^{-m}(式中m为阶码的位数)且尾数为0时,其阶码(移码)全为0,尾数(补码)也全为0,这样的机器零为000…0000,全零表示有利于简化机器中的判“0”电路。

五、举例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zevalin爱灰灰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值