05 计算机的运算方法02

48
线 存储器 运算器 控制器 接口与通信 输入 / 输出设备 林楠 办公室: 408 办公电话: 0371-63887293 电子邮件: [email protected] 《 计算机组成原理 第六章 计算机的运算方法

Upload: huaijin-chen

Post on 21-Jul-2015

407 views

Category:

Education


7 download

TRANSCRIPT

Page 1: 05 计算机的运算方法02

系统总线

存储器

运算器

控制器

接口与通信

输入 / 输出设备

林楠

办公室: 408

办公电话: 0371-63887293

电子邮件: [email protected]

《 计算机组成原理 》

第六章 计算机的运算方法

Page 2: 05 计算机的运算方法02

1 、 数据的表示方式

1.1 、符号的处理(正数、负数) 1.2 、数值的处理(数制转换)

1.3 、小数点的处理(定点、浮点)

1.4 、原码的表示方法1.5 、反码的表示方法

1.6 、补码的表示方法(重点研究)

1.7 、字符的表示方法1.8 、汉字的表示方法

1.9 、校验码

第六章 计算机的运算方法

机器数的表示方法

真值表示问题解决

Page 3: 05 计算机的运算方法02

现代计算机不仅仅是处理数值领域的问题,还有大量非数值数据,比如:文字、字母及专用符号来表示文字语言,逻辑语言等信息。

1.7 字符的表示方法

属于非数值数据的有:

ABC…Z 26 个大写abc…z 26 个小写+-()…#* 符号012…9 数字

国际上广泛采用美国国家信息交换标准代码 -- ASCII 码( 128字符)

用 7 位二进制编码表示, 27=128 字符。

Page 4: 05 计算机的运算方法02

ASCII 字符编码表

DELo -O?/USSI1 1 1 1

~n↑N>·RSSO1 1 1 0

}m]M=-GSCR1 1 0 1

|l\L<,FSFF1 1 0 0

{k[K;+ESCVT1 0 1 1

zjZJ: *SUBLF1 0 1 0

yiYI9)EMHT1 0 0 1

xhXH8(CANBS1 0 0 0

wgWG7′ETBBEL0 1 1 1

vfVF6&SYNACK0 1 1 0

ueUE5%NAKENQ0 1 0 1

tdTD4 $DC4EOT0 1 0 0

scSC3#DC3ETX0 0 1 1

rbRB2″DC2STX0 0 1 0

qaQA1!DC1SOH0 0 0 1

p、P@0SPDLENUL0 0 0 0

111110101100011010001000 b6 b5 b4

b3 b2 b1 b0

表中编码符号的排列次序为 b7b6b5b4b3b2b1b0 b7 恒等于“ 0” , b6b5b4 为高位部分, b3b2b1b0 为低位部

分。

Page 5: 05 计算机的运算方法02

例如 : “A” =0100 0001 = ( 65 ) 10 = ( 41 )

“ ;” =0011 1011 = ( 59 ) 10 = ( 4B )

H

字符串是指连续的一串字符,它们占用主存中连续个存储单元 .每个字节存放一个字符( 字符以 ASCII 码表示 )

例如 : 字符串 IF A > B THEN READ ( C )

象这样字符串存放在主存中,每个字节中存放相应的字符的 ASCII 码值,空格也占用一个字节的位置。

1.7 字符的表示方法

二进制代码只代表不同的字符,而无数值大小。

Page 6: 05 计算机的运算方法02

例如 : 字符串 IF A > B THEN READ ( C )以 ASCII 码表示。

格式如下:

I F 空 A> B 空 TH E N 空R E A D( C ) 空

73 70 32 6562 66 32 8472 69 78 3282 69 65 6840 67 41 32

这个语句需要 20 个字节来存放。

1.7 字符的表示方法

内存中真正存放的是 ASCII 码

Page 7: 05 计算机的运算方法02

1 、 数据的表示方式

1.1 、符号的处理(正数、负数) 1.2 、数值的处理(数制转换)

1.3 、小数点的处理(定点、浮点)

1.4 、原码的表示方法1.5 、反码的表示方法

1.6 、补码的表示方法(重点研究)

1.7 、字符的表示方法1.8 、汉字的表示方法

1.9 、校验码

第六章 计算机的运算方法

机器数的表示方法

真值表示问题解决

Page 8: 05 计算机的运算方法02

1981 年国家标准局 GB2312 《信息交换汉字编码字符集》收集了常用

汉字 6763 个,分一级汉字库 3755 个,二级汉字库 3008 个。

1 、汉字的输入

在计算机系统中使用汉字,首先要解决的问题是如何把汉字输入到

计算机内,直接标准键盘进行输入,就必须为汉字设计编码。

汉字编码方法:

数字编码(区位码,国际区位码)拼音码 (以汉语拼音基础的输入方法)字形码 (五笔字形输入法)

1.8 汉字的表示方法

Page 9: 05 计算机的运算方法02

1 )数字编码输入 优点:无重码,内部编码转换比较方便,每个编码长度

都一样。 缺点:记忆难。

2 )拼音码 以汉语拼音的输入方法,几乎掌握汉语拼音的人都可以

使用。 优点:不需要训练,不要记忆 缺点:汉字同音字太多,输入重码率很高,对输入影响

速度。

3 )字型编码 以汉字的形状确定编码,汉字总数虽少,但它总是一笔

一划组 成,全部汉字的部首和笔画是有限的,这就是五笔字型

编码。 优点:无重码,速度快

4 )其他输入法 在以上三种编码的基础上为了加快输入速度,发展词组

输入, 联想输入,王码输入,几何数码输入等多种快速输入方

法。

1.8 汉字的表示方法

Page 10: 05 计算机的运算方法02

2 、汉字的存储

汉字的存储有两方面的含义:字形码的存储和汉字内码存储。

字形码

是一汉字点阵表示的汉字字形代码,它是汉字的输出形式存储。

输出汉字点阵有 16x16 点阵, 24X24 点阵, 32X32 点阵。

字形码点阵的信息量很大的,占用内存空间大, 以 16X16 点阵为例,每个汉字要占用 32 个字节,

二级汉字大约占 256K 字节。

1.8 汉字的表示方法

因此,点阵只能用来构成字库,而不能用于机内存储。

Page 11: 05 计算机的运算方法02

汉字字形点阵及编码

1.8 汉字的表示方法

0000 0000 1000 00000000 0000 1000 00000010 0000 1000 00000001 0000 1000 00000001 0001 1111 11100000 0101 0000 00100000 1001 0100 0100……

Page 12: 05 计算机的运算方法02

汉字内码 : 使用汉字信息的存储、交换、检索等的机内代码,

内码比字形点阵占用内存少,用二个字节表示一个汉字,

汉字内码表示有许多种,要注意以下几点:

1 )码位尽量短,表示的汉字尽量多;

2 )码值要连续有序,以便于操作运算;

3 )表示两级 6763 个汉字,每个汉字用两个字节。

1.8 汉字的表示方法

Page 13: 05 计算机的运算方法02

3 、汉字的输出

汉字的输出有显示输出(显示器)和打印输出(打印机)。 在接口上都有字库。

计算机以汉字内码的形式输出,打印机根据编码找到点阵再输出。

所以,打印机内部必须有个字库。如果打印机没有字库,计算机

只能以点阵的形式输出。

另外,汉字字符必须和英文字符区分开,以免造成混淆。 英文字符的机内代码是七位 ASCII 码,最高为“ 0” , 汉字机内代码中两个汉字的最高位均为“ 1” ,以便与 7 位

ASCII 码 表示的英文字符相区别。

1.8 汉字的表示方法

Page 14: 05 计算机的运算方法02

IBM PC 机汉字显示原理

1.8 汉字的表示方法

Page 15: 05 计算机的运算方法02

1 、 数据的表示方式

1.1 、符号的处理(正数、负数) 1.2 、数值的处理(数制转换)

1.3 、小数点的处理(定点、浮点)

1.4 、原码的表示方法1.5 、反码的表示方法

1.6 、补码的表示方法(重点研究)

1.7 、字符的表示方法1.8 、汉字的表示方法

1.9 、校验码

第六章 计算机的运算方法

机器数的表示方法

真值表示问题解决

Page 16: 05 计算机的运算方法02

数据在计算机中存取、传送,要求绝对正确,如果某一位出错,就不

能得到正确的结果,但实际上由于某种随机干扰容易发生错误。

比如:

1 )硬盘、软盘进行读写的时候,因为机械运动,容易出错; 2 )内存用的时间长了,老化了。所以计算机一开机检查内存。

向内存写进数据再读出数据,反复检验几次是否出错。

3 )数据在总线上传送,因信号衰减、传输质量的问题或受潮。

出错以后,要能够判断出来,哪一位出错了,并要检验过来。

因此,为了提高计算机的可靠性,除了采用选用更高可靠性的器件,

更好的生产工艺等措施之外,还可以从数据编码上想一些办法。

1.9 、校验码

Page 17: 05 计算机的运算方法02

为了发现和校正错误,计算机广泛采用容错技术,现在的检验办法大多采用“冗余校验”:原始数据 + 校验位(冗余部分)

将原始数据和校验位一起按某种规律编码,存入存储器或向外发送。当从存储器读出或者接收代码时,按同一编码规律进行译码或计算。

然后,取出原始数据,判断传输过程中是否有错,哪一位出错了。

读写 / 传送码字 =

原始数据位 + 校验位

原始数据 结果数据编码过程 译码过程

根据原始数据求得校验位,加上原始数据一并发送。

检查接收到的码字发现 / 改正错误,取出原始数据。

1.9 、校验码

保证相同

Page 18: 05 计算机的运算方法02

用来发现一位数据出错,没有该错能力介绍三种常用的校验码:

1 )奇偶检错码:

用于并行数据传送中,发现一位数据出错,没有纠错能力。

2 )海明检错与纠错码:

用于并行数据传送中,发现一位或两位数据出错,并纠错。

3 )循环冗余码:

用于串行数据传送中,在网络传送数据时多用。

1.9 、校验码

重点

重点

了解

Page 19: 05 计算机的运算方法02

1 、奇偶检验码:用于并行传输、一位检错。

工作原理:在 K 位原始数据位上加上 1 位校验位,使得 K+1 位码字

中“ 1” 的个数总保持为奇数(奇校验)或为偶数(偶校验)个。

1.9 、校验码 __ 1 )奇偶检验

0001

1010100101

0000110001

0101

原始数据 新的码字

校验位

奇校验偶校验

校验位

Page 20: 05 计算机的运算方法02

1 、奇偶检验

发送端产生一个检验位,使“ 1” 的个数是奇数(或偶数)并一起发送。

接收端对读出或接收到的数据要进行奇偶性判别。 若奇偶性规则被破坏,则出错,否则为正

确。

奇偶检验只能发现奇数个错,且不能纠错。

统计表明: 90% 以上的错误能用奇偶检验法来实现。

所以,奇偶检验是最简单、应用广泛的检验码。

1.9 、校验码 __ 1 )奇偶检验

Page 21: 05 计算机的运算方法02

1 、奇偶检验

设 X = (X0X1…Xn-1) 是一个 n 位字

则奇校验位 C 定义为:

当 X 中包含奇数个 1 时,才能使 C=1 ,即 C=0 。

同理,偶检验位定义为:

当 X 中包含偶数个 1 时,才能使 C=0 。

C = X0 X1 … Xn-1+ ++

C = X0 X1 … Xn-1+ ++

1.9 、校验码 __ 1 )奇偶检验

Page 22: 05 计算机的运算方法02

八位原始数据位

编码电路 译码电路

异或门

逻辑异或

0⊕0=00⊕1=1

1⊕0=1

1⊕1=0

1.9 、校验码 __ 1 )奇偶检验

Page 23: 05 计算机的运算方法02

1.9 、校验码 __ 2 )海明检验

2 、海明检验:用于并行传输、多位检错、纠错处理。

工作原理:为 k 个数据位设立 r 个检验位。 使 k+r 位组成的码字同时具有两

个特性: 1 )能发现 k+r 位中任何一位出错,并改正 ;

2 )能发现 k+r 位中任何两位同时出错,无法纠正。校验码的位数 r 和数据的位数 k 应满足关系: 2r-1≥k+r

858~120

727~57

612~26

55~11

41~4

最 小 的 r 值k 值

Page 24: 05 计算机的运算方法02

海明码字 = 数据 + 校验位 = HmHm-1…H2H1 ( m= 校验位r+ 数据位 k ) 每个校验位 Pi在海明码中被分在位号 2i-1的位置, 其余各位为数据位,按从低向高逐位依次排列。

例如 : 数据位 k=3 ,校验位 r=4 ,海明码字位 m=7 ,

4 个校验位 P4P3P2P1对应的海明码位号应分别为:

H7, H4, H2, H1 ( Pi的位号等于 2i-1 ) P4只能放在 H7一位上,它已经是海明码的最高位了。

其余为数据位 D3 D2 D1 ,则有如下排列关系:

1.9 、校验码 __ 2 )海明检验

2 、海明检验

k=3 (数据位) D3D2D1

r=4 (校验位) P4P3P2P1

海明码字 H7 H6 H5 H4 H3 H2 H1

海明码字 P4 D3 D2 P3 D1 P2 P1

Page 25: 05 计算机的运算方法02

D3 D2 D1 P4 P3 P2 P11 1 1 1 1 1 1 0 1 0 0 0 0 1 0 0 0 0 1

通过一张表分配不同的数据位组合来形成每个校验位的值。

步骤一、准备工作:

按次序排列数据位、校验位; 分别在不同横行中的 P1 、 P2 、 P3 、 P4各列写 1 ; 在最顶横行其他各列填写 1 ; P1 、 P2 、 P3 、 P4 的其他位置写 0 ;

1.9 、校验码 __ 2 )海明检验

海明码 HmHm-1…H2H1 编码实现方案: 海明码字 P4 D3 D2 P3 D1 P2 P1

通过 D3D2D1 求得 P4P3P2P1

Page 26: 05 计算机的运算方法02

步骤二、为各校验位分配数据位组合:

看表的低三横行右侧 4 列的编码值分别为: 1 ( 001 ) 2 ( 010 ) 4 ( 100 ) 0 ( 000 ) 为低 3横行左侧 3 列各列填写合理的编码值,其规则为: 使用没有在右侧 4 列的最小正整数值, 即 3 (011) 5 (101) 6 (110)

6 5 3 0 4 2 1

D3 D2 D1 P4 P3 P2 P11 1 1 1 1 1 11 1 0 0 1 0 01 0 1 0 0 1 00 1 1 0 0 0 1

1.9 、校验码 __ 2 )海明检验

海明码 HmHm-1…H2H1 编码实现方案: 海明码字 P4 D3 D2 P3 D1 P2 P1

通过 D3D2D1 求得 P4P3P2P1

Page 27: 05 计算机的运算方法02

步骤三、写出各校验位的编码逻辑表达式: 用 P1 、 P2 、 P3 、 P4取值为 1 的横行中的取值为 1 的数据位 进行异或运算求得每个校验位的值,结果是: P1=D2 D1⊕ , P2=D3 D1⊕ , P3=D3 D2⊕ 用其他各校验位及各数据位进行异或运算求得总校验位 P4 , 用于区分无错、奇数位错、偶数位错 3 种情况。 总校验位 P4=P3 P2 P1 D3 D2 D1⊕ ⊕ ⊕ ⊕ ⊕

D3 D2 D1 P4 P3 P2 P11 1 1 1 1 1 11 1 0 0 1 0 01 0 1 0 0 1 00 1 1 0 0 0 1

1.9 、校验码 __ 2 )海明检验

海明码 HmHm-1…H2H1 编码实现方案: 海明码字 P4 D3 D2 P3 D1 P2 P1

通过 D3D2D1 求得 P4P3P2P1

Page 28: 05 计算机的运算方法02

D3 D2 D1 P4 P3 P2 P11 1 1 1 1 1 11 1 0 0 1 0 01 0 1 0 0 1 00 1 1 0 0 0 1

P1= D2 D1⊕P2=D3 D1⊕P3=D3 D2⊕P4=P3 P2 P1 D3 D2 D1⊕ ⊕ ⊕ ⊕ ⊕

S1= P1 D2 D1⊕ ⊕S2= P2 D3 D1⊕ ⊕S3= P3 D3 D2⊕ ⊕S4=P4⊕P3 P2 P1⊕ ⊕ D3 D2 D1⊕ ⊕ ⊕

如果有数据为 110 ,则算的:则 P1=1 , P2=1 , P3=0 , P4=0

若 S4 S3 S2 S1=0000 :无错

若 S4 S3 S2 S1 =1011 :一位出

错 S4 必为 1 ,其中 3 位为

1 。例如:仅 D1错。若 S4 S3 S2 S1 =0001 :两位出

错S4 必为 0 , S3 S2 S1 不为

000 。例如: P2 D1错。

1.9 、校验码 __ 2 )海明检验

海明码 HmHm-1…H2H1 编码实现方案:

发送

译码方案

P4 D3D2P3D1P2P1 0110011

海明码字 P4 D3 D2 P3 D1 P2 P1

通过 D3D2D1 求得 P4P3P2P1

Page 29: 05 计算机的运算方法02

D7 D6 D5 D4 D3 D2 D1 P5 P4 P3 P2 P11 1 1 1 1 1 1 1 1 1 1 11 1 1 0 0 0 0 0 1 0 0 00 0 0 1 1 1 0 0 0 1 0 01 1 0 1 1 0 1 0 0 0 1 01 0 1 1 0 1 1 0 0 0 0 1

P1= D7⊕ D5 D4 D2 D1⊕ ⊕ ⊕P2= D7⊕ D6 D4 D3 D1⊕ ⊕ ⊕ P3= D4 D3 D2⊕ ⊕P4= D7 D6 D5⊕ ⊕P5= P4⊕ P3 P2 P1 D7 D6⊕ ⊕ ⊕ ⊕ D5 D4 D3 D2 D1⊕ ⊕ ⊕ ⊕

1.9 、校验码 __ 2 )海明检验

例如:k=7 , r=5

11 10 9 7 6 5 3 0 8 4 2 1

海明码排序为: P5 D7 D6 D5 P4 D4 D3 D2 P3 D1 P2 P1 Pi 在 2i-1

Page 30: 05 计算机的运算方法02

1.9 、校验码 __ 3 )循环冗余码

对原始数据,用一多项式(通过查数学表得到)去除,

除得的余数就是校验位的值。(这里的除是模 2除法运算)

数据位( k ) + 校验位( r ) = 新的码字 ( k + r )

3 、循环冗余码 CRC :用于串行数据传送中多位检错纠错处理。

模 2 运算:按位模 2 相加,运算时不考虑进位和借位。

1 )模 2 加:即按位加,可用异或逻辑实现。

2 )模 2 加与模 2减的结果相同, 即

0±0=0 , 0±1=1 , 1±0=1 , 1±1=0 。 两个相同的数据的模 2 和为 0 。3 )模 2乘——按模 2 加求部分积之和。4 )模 2除——按模 2减求部分余数。

Page 31: 05 计算机的运算方法02

101 1000000-10111 011100 -00000 11100 -10111 1011

10111

模 2除: 被除数后先补上 r-1 个 0 ;每求一位商,余数少一位。

上商原则: 被除数首位为 1 ,商取 1 ;首位为 0 ,商取0 。

当余数位数小于除数位数时,该余数即为结果。

数据位 k = 3 ,校验位 r = 4 数据为 100 ,查数学表得到生成多项式 10111

求出的校验值 = 1011

循环校验码 CRC ( k + r 位)= 数据位 k + 校验位 r= 1001011

1.9 、校验码 __ 3 )循环冗余码

3 、循环冗余码 CRC

Page 32: 05 计算机的运算方法02

将收到的循环校验码 1001011 用约定的生成多项式 10111去除,

如果码字无误则余数应为 0 ,

如有某一位出错,则余数不为 0 ,不同位数出错余数不同。

1.9 、校验码 __ 3 )循环冗余码

3 、循环冗余码 CRC 的译码与纠错

101 1001011-10111 01011 -00000 10111 -10111 0

10111

Page 33: 05 计算机的运算方法02

第六章 计算机的运算方法

2 、定点加、减法运算与实现2.1 、补码定点加、减运算2.2 、溢出概念与检测方法2.3 、补码定点加法器

注释:前面我们讨论了数的补码表示方法,采用补码表示,减法可用加法来实现,对设计硬件来讲,只要设计一个加法器就可以实现加、减运算了,不需要再配一个减法器了。

Page 34: 05 计算机的运算方法02

1 、补码加法

两个补码数相加,符号位参加运算, 且两数和的补码等于两数补码之和。 即: [ X+Y ] 补 = [ X ] 补 + [ Y ] 补

2 、补码减法

原则上讲: [ X-Y ] 补 = [ X ] 补 - [ Y ] 补

可见需要一个减法器,而现在只有加法器,如何得到 [ X-Y ] 补呢?

我们可以根据补码加法公式推出: [ X-Y ] 补 = [ X + ( -Y ) ] 补 = [ X ] 补 + [ -Y ] 补

这样,减法的问题就归结到如何求 [ -Y ] 补的问题了。

从负数引的理论: [ -Y ] 补 = / [ Y ] 补 +1 也就是说: [ -Y ] 补 等于 [ Y ] 补连同符号位在内求反加

1 。

2.1 、补码定点加、减运算

Page 35: 05 计算机的运算方法02

例 1 、 Y=0.1010

[Y] 补 = 0.1010 [ -Y ] 补 = 1.0110

例 2 、 Y= - 0.1010

[Y] 补 = 1.0110 [ -Y ] 补 = 0.1010

例 3 、已知 [ X ] 补 = 0.0010 , [Y] 补 = 1.1010 求 [ X-Y ] 补 = ? 解: [ X ] 补 = 0.0010

+ ) [ -Y] 补 = 0.0110 [ X-Y ] 补 = 0.1000

这就是运算求得的正确结果。

2.1 、补码定点加、减运算

Page 36: 05 计算机的运算方法02

例 4 、已知 [ X ] 补 = 1.1011 , [Y] 补 = 0.0110 求 [ X-Y ] 补 = ?

解: [ X ] 补 = 0.0010

+ ) [ -Y] 补 = 1.1010 [Y] 补 是正数, [-Y] 补 变成一负数

[ X-Y ] 补 = 11.0101

以 2 为模的情况下,符号位的进位 1 在机器中将会自动舍弃,

故得出的就是正确的结果 [ X-Y ] 补 。

2.1 、补码定点加、减运算

Page 37: 05 计算机的运算方法02

第六章 计算机的运算方法

2 、定点加、减法运算与实现2.1 、补码定点加、减运算2.2 、溢出概念与检测方法2.3 、补码定点加法器

Page 38: 05 计算机的运算方法02

1 ) 溢出的产生

例 1 : [ X ] 补 = 0.1011 + ) [ Y ] 补 = 0.0111 [ X+Y ] 补 = 1.0010

例 2 : [ X ] 补 = 1.0101 + ) [ Y] 补 = 1.1001 [ X+Y ] 补 = 0.1110

从例 1 例 2 中看出,两个正数相加,结果是一负数(符号位为1 ),而两个负数相加,结果是一个正数(符号位为 0 ),显然结果错误。

2.2 、溢出概念与检测方法

Page 39: 05 计算机的运算方法02

溢出原因分析:寄存器的位数一旦确定下来,就有了容量的限制, 数值表示的范围就固定了。 如果运算过程中数值位超出了机器允许表示的范围, 跑到符号位上从而改变了符号的性质,就产生溢出。

00000001

11111110

符号位 数值位

显然,机器允许表示范围应该为 +127 到 -128 之间,

大于 127 称为上溢或正溢出,小于 -128 称为下溢或负溢出。

2.2 、溢出概念与检测方法

Page 40: 05 计算机的运算方法02

2 )溢出的判断方法

计算机只能判断溢出,不能处理溢出!

下面介绍计算机判断溢出的方法。 方法一: 设 [X] 补 = X0 X1 X2 … Xn ,

[Y] 补 = Y0 Y1 Y2 … Yn ,

其和(或差)为 [ S ] 补 = S0 S1 S2 … Sn 。

则溢出条件为: V = X0 Y0 /S0 + /X0 /Y0 S0

例 1 : [ X ] 补 = 0.1011 + ) [ Y ] 补 = 0.0111 [ X+Y ] 补 = 1.0010

例 2 : [ X ] 补 = 1.0101 + ) [ Y ] 补 = 1.1001 [ X+Y ] 补 = 0.1110

2.2 、溢出概念与检测方法

Page 41: 05 计算机的运算方法02

00.1001+ 00.0011 00.1100 不溢出

11.0111+ 11.1101 11.0100 不溢出

00.1101+ 00.1001 01.0110 正溢出

11.0011+ 11.0111 10.1010 负溢出

观察下列算式:

可见,当结果两个符号位的值不一致时,表示溢出,若设两符号位 Sf1 和 Sf2 ,则: V = Sf1 S⊕ f2

2 )溢出的判断方法 方法二:采用变形补码(双符号位补码)

比喻:比如第一道河坝拦不住水了,就再设一道。

这种方法好,但是增加一个符号位后,数据表示范围缩小了,最好改进只设置一个符号位!

2.2 、溢出概念与检测方法

Page 42: 05 计算机的运算方法02

2 )溢出的判断方法 方法三:采用双高位判断

数值部分最高位产生的进位为 Cs ;

(设置一触发器) 符号位部分向上产生的进位为 Cf 。

(设置一触发器) 溢出条件公式: V = Cs C⊕ f

0.1001+ 0.0011 0.1100

不溢出

1.0111+ 1.1101 1.0100

不溢出

0.1101+ 0.1001 1.0110

溢出

1.0011+ 1.0111 0.1010

溢出

Cf=0 Cs=0 Cf=1 Cs=1 Cf=0 Cs=1 Cf=1 Cs=0

2.2 、溢出概念与检测方法

Page 43: 05 计算机的运算方法02

第六章 计算机的运算方法

2 、定点加、减法运算与实现2.1 、补码定点加、减运算2.2 、溢出概念与检测方法2.3 、补码定点加法器

Page 44: 05 计算机的运算方法02

设两寄存器中存放 A , B两数,进行运算 .

A寄存器: A0 . A1 A2 … An B寄存器 : B0 . B1 B2 … Bn 则:

A+ B = A0 . A1 A2 … An + B0 . B1 B2 … Bn

A - B = A0 . A1 A2 … An + B0 . B1 B2 … Bn + 0.00…01且: A+B A A–B A

累加器:硬件要支持软件,软件中有循环程序设计,所以要设计累加器。SUM= 1+2+3+4+5+…+100 S=S+X

2.3 、补码定点加法器

[ X ] 补 [ Y ] 补

[ X+Y ] 补 = [ X ] 补 + [ Y ] 补

[ X-Y ] 补 = [ X ] 补 + / [ Y ] 补 +1

Page 45: 05 计算机的运算方法02

用四片 4 位 ALU 电路可组成 16 位 ALU 。( 1110 1101 0101 0001 )片内进位是快速的,但片间进位是逐片传递的,形成 F0~ F15时间长。

知识回顾:算术逻辑单元

把 16 位 ALU 中的每四位作为一组,用类似四位超前进位加法器 “ 位间快速进位” 的形成方法来实现 16 位 ALU(由四片 ALU组成 ) 中的 “组间快速进位”,那么就能得到 16 位快速 ALU 。

Page 46: 05 计算机的运算方法02

CPA

2.3 、补码定点加法器

+A +B- B

实现加法运算的逻辑示例

A+B A A–B A

Page 47: 05 计算机的运算方法02

2.3 、补码定点加法减法器

对实现电路的补充说明:

功能 所需要的控制信号

加 ADD +A +B · A CPA减 SUB +A /+B +1 · A CPA

将两种功能的控制命令综合起来,得:

+A = ADD + SUB+B = ADD/+B = SUB+1 = SUB·- A = ADD + SUBCPA = ADD + SUB

Page 48: 05 计算机的运算方法02

复习与作业

复习章节:

第 6 章 计算机的运算方法

6.3.2 加法与减法运算

作业: P291

6.19