数值的机器运算

计算机组成原理 | 2021-10-07 20:43:03 | 阅读 63 次 | 评论(0)

基本算术运算的实现

计算机中基本的算术运算:加法运算-----加法器

加法器

  1. 全加器
本 位 和 Si 
向 高 位 的 进 位 q 
操 作 数 Ai 和 Bi 
低 位 传 来 的 进 位 Ci . 1

Si=Ai+Bi+Ci-1

Ci=AiBi+(AiBi)Ci-1

  1. 串行加法器与并行加法器

串行加法器:只有一个全加器,数据逐位串行送入加法器进行运算。

器件少,成本低。运算速度慢

并行加法器:多个全加器组成,其位数的多少取决于机器的字长,数据的各位同时运算。

同时对数据的各位相加,存在加法的最长运算时间的问题。

  • 操作数各位同时进行,但低位运算进位会影响高位运算结果
  • 最长运算时间主要由进微信号传递时间决定,每个全加器本身只是次要因素
  • 提高并行加法器速度关键是加快进位产生和传递的速度

进位的产生和传递

传递进位信号的逻辑线路连接起来构成的进位网络称为进位链。

进位表达式:Ci=AiBi+(AiBi)Ci-1  即:Ci=Gi+PiCi-1(前面是产生的进位,后面是后面传递过来的进位)

并行加法器的快速进位

并行进位方式:各级进位信号同时形成

 

Cn=Gn+P G 
...P2PlC0

随着加法器位数增加,Ci的逻辑表达式会变的越来越长,电路结构变复杂

分组并行进位方式

  1. 单级先行进位方式(组内并行,组间串行)
C16 
4 イ 立 CLA 
加 法 器 
C に 
S12 ・ ~ - ・ S9 
C8 
4 イ 立 CLA 
カ ロ 法 器 
9 
- 12 ・ ~ BO 
4 イ 立 CLA 
加 法 器 
Bs : ~ Bs ー 
C4 
4 イ 立 CLA 
カ ロ 法 器 
ー B4 ・ 、 イ B + ー 
C

组内运行较少,可看做组内并行,不考虑GiPi的形成时间,从C0-Cn最长延迟时间与字长无关。

位 单 级 先 行 进 位 时 间 图 
8 6 4 2 0
  1. 多级先行进位方式(组内并行、组间并行)

C4=G1*+P1*C0;

G1*=G4+P4G3+P4P3G2+P4P3P2G1 组进位产生函数

P1*=P4P3P2P1 组进位传递函数

С16 
В 13 
вп—В9 
В4—В1 
CLAEE% 
—S13 
BCLA 
А 16 А з 
S 12 S9 
BCLA 
А 12 9 
S8—S5 
BCLA С4 
S4—S1 
BCLA 
со

过程:

  • 不考虑Gi、Pi形成时间,C0经过2ty产生C1,C2,C3(其他BCLA同样)及所有组进位函数Gi*和组进位传递函数Pi*(只要有Ai,Bi就可以计算)。
  • 经过2ty,由CLA电路产生C4,C8,C12,C16(然后才能求(C5-C7))
  • 经过2ty,产生二三四小组内的C5-C7,C9-C11,C13-C15.
ty 
6 
Стсо

定点加减运算

包括原码,补码,反码3种带符号数的加减运算。

原码加减运算

特点:符号位不参与运算

   符号位和加法指令共同作为运算指令

基本规则:

加法:同号求和,异号求差

减法:同号求差,异号求和

方法:

  1. 参加运算的操作数取其绝对值(不直接用绝对值进行运算)
  2. 求和:两数(绝对值)直接相加

求差:减数先求补,在进行加法运算

  1. 运算之后:

有进位:结果为正,正确

无进位:结果为负,再次求补,得到正确结果

  1. 结果的符号位取两位绝对值大的符号

补码加减运算

方法:

  1. 参加运算的两个操作数用补码表示
  2. 符号位作为数的一部分参与运算
  3. 做加法,两数直接相加,做减法,被减数(减号前面的数)与减数的机器负数([-Y]补)相加
  4. 运算结果用补码表示

特点

  • 两数和的补码=两数补码之和
  • [-Y]补=[[Y]补]变补=[Y]补符号位数值位一起取反,末尾加一

补码的溢出判断与检测方法

溢出的产生

溢出:运算结果超出机器数所能表示的范围

两正数相加溢出:正溢,大于所能表示的最大正数

两负数想加溢出:负溢,大于所能表示的最大负数

补码运算,若两正数相加,结果为负;两负数相加,结果为负,则结果出错。

溢出检测方法

变形补码:

补码采用两位符号位表示,两个符号位都作为数的一部分参与运算。

左边的符号位Ss1叫做真符

溢出判断:两位符号位的值不一致,溢出,溢出=Ss1Ss2

Ss1Ss2

正负

是否溢出

00

正数

无溢出

01

正溢

 

10

负溢

 

11

负数

无溢出

带符号位的移位操作

原码:符号位不变,空出位以零补入

补码:

正数:符号位不变,空出位以零补入

负数:右移补1,左移补0

定点乘法运算

原码一位乘法

方法

  1. 参加运算的操作数取其绝对值
  2. 令乘数的最低位为判断位:

若为1,加被乘数(乘号前面的)

若为0,加0

  1. 累加后的部分积以及乘数右移一位
  2. 重复n次(2)(3)(乘数有几位重复几次)
  3. 符号位单独处理,同号为正,异号为负

补码一位乘法

校正法

  • 乘数为正数,按原码乘法规则计算,移位按照补码的算术移位(不用取绝对值)
  • 乘数为负数,按原码乘法规则计算,移位按照补码的算术移位,最后加上[-X]补进行校正

比较法--Booth乘法

  • 参加运算的数用补码表示
  • 符号位参加运算
  • 乘数最低位后面增加一位附加位Yn+1,其初值为0;共1+n+1位
  • 由于每求一次部分积要右移一次,所以乘数的最低两位Yn、Yn+1的值决定了每次应执行的操作
  • 移位按补码右移规则进行
  • 共需做n+1次累加,n次移位,第n+1次不移位

YnYn+1

操作

00

原部分积右移一位

01

原部分积加[X]后右移一位

10

原部分积加[-X]后右移一位

11

原部分积右移一位

补码两位乘法

Yn-1YnYn+1

操作

000

+0右移两位

001

+[X]右移两位

010

+[X]右移两位

011

+2[X]右移两位

100

+2[-X]右移两位

101

+[-X]右移两位

110

+[-X]右移两位

111

+0右移两位

原码除法

  • 比较法
  • 恢复余数法
    • 先做减法
    • 部分余数为正,表示够减,商1;部分余数为负,不够减,商0,要恢复余数
    • 操作次数不固定

方法:

  • 商的符号位独立运算
  • 除数不能为0,否则溢出
  • 比较被除数X与除数Y的大小,当|X|<|Y|继续运行,否则溢出
  • 被除数(余数)-除数(Y)

若余数>=0,商1,余数左移一位

若余数<0,商0,恢复余数(+Y),余数左移一位

  • 重复n次(除数的尾数位数),得到商(Y为0.1111是5位)及余数
  • 符号位=X的⊕Y的

原码不恢复余数除法

  • 余数为正,商1,余数左移一位,减除数
  • 余数为负,商0,余数左移一位,加除数
  • 最后一步不够减,商0,恢复余数处理(+Y)

补码除法运算

规格化浮点运算

十进制整数的加法运算

运算器的基本组成

文章评论,共0条
游客请输入验证码
最新评论
  • 阵背产拿:funcode小游戏插背景音乐能用吗😭