处理溢出的方法计算机组成,计算机组成原理复习(五)

计算机组成原理之数字

第六章 计算机的运算方法

6.1有符号数和无符号数

一.无符号数

寄存器的位数(机器字长)反映了符号数的表示范围。

以机器字长为16位为例,无符号数可表示数据范围为0——65535,有符号数-32678——+32678

二.有符号数

1.机器数与真值

真值(带符号的数)----------- 机器数(符号为数字化的数)

+0.1011-----------------------------0 1011

-0.1011------------------------------1 1011

+1100--------------------------------01100

-1100---------------------------------11100

PS:上面四个例子都是定点数的表示方式,前两种是在小数定点机中的表示,后两种是在整数定点机中的表示。在计算机中无法直接表示出小数点的位置,故在计算机设计的时候以约定的方式固定小数点的位置。在小数定点机中小数点被约定在符号位之后,即上面标示的空格位置;在整数定点机中小数点的位置被约定在数值最后。

2.原码表示法(带符号的绝对值表示)

定义:整数

【X】原=0,X (0<=X<2^n)

【X】原=2^n-X (-2^n

如+1100表示为 0,1100

-1100表示为 1,1100

小数

【X】原=X(0<=X<1)

【X】原=1-X (-1

如+0.1100表示为0.1100

-0.1011表示为1.1011

注意,原码中的0有两种表示方式

【+0】原=0,0000;【-0】原=1,0000(数值位位数取决于机器字长)

【+0.0000】原=0.0000;【-0.0000】原=1.0000

源码的特点:简单直接,但在运用原码计算时,操作过程比较复杂。

3.补码表示法

(1)补的概念

通过时钟建立模的概念:-3==+9(mod12)-4==+8(mod 12)

结论:一个负数加上模即为该负数的补数;一个正数和一个负数互为补数时,他们的和为模的值;正数的补数仍为其自身;两个互为补数的数分别加上模结果仍互为补数。

(2)补码定义

整数

【X】补=0,X (0<=X<2^n)

【X】补=2^(n+1)+X (-2^n

如+1100表示为 0,1100

-1100表示为 1,0100

小数

【X】补=X(0<=X<1)

【X】补=2+X (-1<=X<0)(mod 2)

如+0.1100表示为0.1100

-0.1011表示为1.0101

注意,小数位数或精度受到寄存器位数影响

(3)求补码的快捷方式

X为真值,

当真值为正时,【X】原=【X】补

当真值为负时,【X】补=【X】原 各位取反加1,【X】原=【X】补 各位取反加1

注意!

【-0】补=【+0】补

根据小数补码定义知【-1.0000】补=2+X=10.0000-1.0000=1.0000,但是-1没有原码形式

4.反码表示法

定义

整数

【X】反=0,X (0<=X<2^n)

【X】反=2^(n+1)-1+X (-2^n<=X<=0)(mod 2^(n+1))

如+1100表示为 0,1100

-1100表示为 1,0011

小数

【X】反=X(0<=X<1)

【X】反=(2-2^-n)+X (-1

如+0.1100表示为0.1100

-0.1011表示为1.0100

注意:【+0】反=0,0000;【-0】反=1,1111

三种机器数表示的最高位为符号位,书写上用“,”或“.”将符号位与数值位隔开。

对于正数,原码=反码=补码

对于负数,符号位为1,其数值部分有两种方式转变

原码各位取反,即变换反码

原码各位取反+1,即变换为补码

二进制代码范围:0000 0000------1111 1111

无符号数范围:0-------255

原码范围:-127--------+127

补码范围:-128--------+127

反码范围:-127--------+127

已知【Y】补,则【Y】补连同符号位在内每位取反末尾加1则变换为【-Y】补

5.移码表示法(在计算机中补码很难直接判断其值大小)

(1)移码定义

【X】移=2n+X(-2n<=X<2n),X为真值,n为整数位数。即真值增加偏移量。

如X=+10100,【X】移=2^5+10100=1,10100;

X=-10100,【X】移=2^5-10100=0,01100;

移码只有整数定义,通常用来表示浮点数制表示的阶码部分

(2)移码和补码的比较

移码个补码之差一个符号位!!

(3)移码的特点

X=0时,【+0】移=1,0000=【-0】移=1,0000

当N=5时,移码可表示的最小真值为-25=-100000

故移码【-100000】移=000000.故最小真值移码为全0

6.2 数的定点表示和浮点表示

一.定点表示:小数点按照约定的方式标出

定点机分为小数定点机和整数定点机。

二.浮点表示

(1)为什么要引入浮点表示?

1.定点表示编程困难;2.定点数的表示范围小;3.存储单元利用率低

(2)浮点表示的一般形式

N=S * rj

S:尾数,j:阶码,r:尾数的基值。在计算机中S应为小数,可正可负,j应为整数,可正可负

当r=2时,N=11.0101=0.110101 * 210=1.10101 * 21=0.00110101 * 2100等

在计算机中,第二种和第三种为正确表示形式,且第二种被称为规格化数。

(3)浮点数的表示形式

| Jf | J1J2J3……Jm | Sf | S1S2S3……Sn |

其中Jf为阶符,J1——Jm为阶码的数值部分

Sf为浮点数符,S1——Sn为尾数的数值部分

小数点位置分别在Jm和Sf之间和Sf与S1之间。

如+11.0101表示为规格化浮点数形式为0.110101*2^10

在计算机中存储为00,10;00.110101

(4)浮点数的表示范围

上溢:阶码大于最大阶码,计算按出错处理

下溢:阶码小于最小阶码,计算按机器零处理

(5)浮点数的规格化形式(尾数基值不同,浮点数的规格化形式不同)

r=2时,尾数最高位为1;

r=4时,尾数最高两位不全为0;

r=8时,尾数最高三位不全为0;

r=16时,尾数最高4位不全为0;

(6)浮点数的规格化

以r=2为例,左规表示尾数左移一位,阶码减1;右规表示尾数右移一位,阶码加1.

由此尾数格式化后浮点数表示范围发生了变化(因为尾数最高位必须为1)。

基数r越大,可表示的浮点数范围越大,但是数值精度越低。

(7)机器零

1.当浮点数尾数为0,不论阶码值为多少,按机器零处理

2.当浮点数阶码等于或小于它能表示的最小阶码,不论尾数值多少,按机器零处理

3.当阶码用移码表示,尾数用补码表示时,机器零由上述两点可表示为0,0000;0.0000,有利于判0电路的实现

三 IEEE754标准

| S | 阶码(含阶符)| 尾数 |

S为数符,小数点位置在阶码和尾数之间。尾数必须为规格化表示,有效位最高位1被隐含。

6.3 定点运算

一 移位运算

1.移位的意义:左移为绝对值扩大,右移为绝对值减小

2.算数移位规则

正数:原码,反码,补码无论左移右移都添0.

负数:原码左右移添0;补码左移添0,右移添1;反码无论左右移都添1.

3.算数移位和逻辑移位的区别

算数移位是有符号数的移位,逻辑移位是无符号数的移位

逻辑右移是低位移丢,高位添0;逻辑左移是高位移丢,低位添0.

二 加减法运算

1.补码加减法公式

[A+B]补=[A]补+[B]补

[A-B]补=[A]补+[-B]补

2.溢出判断

(1)一位符号位判断溢出:参与操作的两个数符号相同,其结果的符号与原操作数的符号不同即为溢出。(最高有效位进位异或符号位进位=1)

(2)两位符号位判断溢出:结果的双符号位相同则未溢出;结果的双符号位不同则为溢出。

双符号位算术右移,低符号位参与运算,高符号位表示真正的符号位。

三 乘法运算

1.乘法可通过加法和移位实现;由乘数末位决定被乘数是否与原部分积相加,然后右移一位形成新的部分积,同时乘数右移一位(末位移丢)高位用来存放部分积的低位;被乘数只与部分积高位相加。

2.原码乘法(原码一位乘)

特点:绝对值运算,用移位次数来判断乘法是否结束(逻辑移位)。

3.补码乘法(补码一位乘,校正法和比较法)

(1)校正法:对于补码一位乘,乘数Y为正时,无论被乘数X正负,都可以按照原码乘法来计算,但是移位要按照补码移位规则;乘数Y为负时,按照原码乘法计算,补码移位规则,但是要在最后结果上加上【-X】补来校正。

(2)比较法(BOOTH算法)

1.被乘数与部分积一般取双符号位,且符号位参与运算;

2.乘数取单符号位来确定最后一步是否校正;

3.乘数末为增设附件位Yn+1,初始值为0;

4.根据Yn,Yn+1的值进行运算,步骤同校正法;

5.按上述算法进行到n+1步,但第n+1位不再移位,仅根据Y0和Y1比较结果确定是否校正;

6.按补码移位规则,部分积为正,右移添0;部分积为负,右移添1(双符号位只有次高符号位参与移位)

YnYn+1为00,Yn+1-Yn=0,部分积右移一位;

YnYn+1为01,Yn+1-Yn=1,部分积加【X】补,右移一位;

YnYn+1为10,Yn+1-Yn=-1,部分积加【-X】补,右移一位;

YnYn+1为11,Yn+1-Yn=0,部分积右移一位;

四 除法运算

原码除法:

约定:小数定点除法|被除数||除数|;除数被除数不等于0。

(1)恢复余数法

(2)不恢复余数法(加减交替法)

方法:上商1,2Ri-Y*;上商0,2Ri+Y*

特点:上商n+1次,第一次上商判断溢出;移位n次,加法操作n+1次,用移位次数判断除法是否结束。

6.4 浮点四则运算

一 浮点加减运算

1.对阶(对阶原则:阶码应小阶向大阶看齐,这样不会出现溢出错误);

2.尾数求和;

3.规格化:为增加有效数字位数,提高运算精度,必须将求和或求差后的尾数规格化;

(1)规格化数判断

S为正

原码:0.1XXXXXXXXXXXX

补码:0.1XXXXXXXXXXXX

反码:0.1XXXXXXXXXXXX

S为负

原码:1.1XXXXXXXXXXXX

补码:1.0XXXXXXXXXXXX

反码:1.0XXXXXXXXXXXX

无论正负,原码规格化数第一位为1;反、补码符号位和第一数值位相反;

特例

【-0.5】补=1.1000

【-1】补=1.0000(小数定点机无原码)

(3)

左规:尾数左移一位,阶码加1,直到数符和第一数位不同;

右规:尾数右移一位,阶码加1,直到数符和第一数位不同;

当尾数出现01.XXXXXXX或10.XXXXXX时,尾数溢出需右规。

4.舍入:为提高精度,要考虑尾数右移时丢失的数值位

(1)0舍1入法

(2)恒置1法

5.溢出判断:浮点数溢出完全由阶符判断

阶符为10时,下溢,按机器零处理;

阶符为01时,上溢,须做中断处理。

6.5 算术逻辑单元

一 ALU电路

二 快速进位链

1.并行加法器(数电知识)

由数电知识分析知对进位电路影响最大的因素是低级进位端

Ci=AiBi+(Ai+Bi)Ci-1

AiBi为本地进位,Ai+Bi为传送条件,可简写为Ci=di+tiCi-1

2.串行进位链

进位链:传送进位的电路即为进位链

以4位全加器为例,分析得知假设一个与非门延迟为Ty,则n位全加器进位延迟2nTy。

3.并行进位链

(1)单重分组跳跃进位链:n位全加器分为若干小组,小组中的进位同时产生,小组之间采用穿行进位。

(2)双重分组跳跃进位链

n位全加器分为若干大组,大组之间包含若干小组,每个大组中小组的最高进位同时产生,大组之间串行进位。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值