计算机组成及结构第3章1_第1页
计算机组成及结构第3章1_第2页
计算机组成及结构第3章1_第3页
计算机组成及结构第3章1_第4页
计算机组成及结构第3章1_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机组成原理任课教师:郝尚富河北北方学院信息科学与工程学院Email:zjkcxh5656@163.comTel3章运算方法和运算部件3.1数据的表示方法和转换3.2带符号二进制数据的表示方法和加减运算3.3二进制乘法运算3.4二进制除法运算3.5浮点数的运算方法3.6运算部件3.7数据校验码本章重难点重点:1、数据的表示(定点数、浮点数)2、补码的加减运算及溢出判断3、定点数的原码、补码的乘除法,实现框图4、运算部件组成、原理5、数据校验码的编码、译码方法,功能、应用场合。3.1数据的表示方法和转换3.1.1数制与数据的转换:(P68)

基:数码权:每一位的值常用的几种进位数制:

1.二进制B2.八进制Q3.十六进制H4.十进制D

数据的转换:

1.二(八、十六)进制转换成十进制数据

2.二进制数与八进制、十六进制的关系

3.十进制转换为二进制:凑幂次方方法3.1.2十进制数的编码与运算

在计算机中采用4位二进制码对每个十进制数位进行编码。

有权码:表示一位十进制数的二进制码的每一位有确定的权。

8421码BCD码:以二进制编码的十进制(binarycodeddecimal。

在计算机内部实现BCD码算术运算,要对运算结果进行修正。修正方法:如果两个一位BCD码相加之和小于或等于(1001)2,即(9)10,不需要修正;如相加之和大于或等于(10)10,要进行加6修正,并向高位进位,进位可以在首次相加或修正时产生。另外几种有权码:特点:任何两个相加之和等于9的二进制码互为反码(除了8421码)。

余3码是在8421码基础上,把每个编码都加上0011而形成的(见表3.3),其运算规则是:当两个余3码相加不产生进位时,应从结果中减去0011;产生进位时,应将进位信号送人高位,本位加0011。

格雷码的编码规则:任何两个相邻编码只有一个二进制位不同,而其余三个二进制位相同。其优点是从一个编码变到下一个相邻编码时,只有l位发生变化,用它构成计数器时可得到更好的译码波形。格雷码的编码方案有多种,表3.3给出两组常用的编码值。无权码:表示二个十进制数位的二进制码的每一位没有确定的权。

数字串在计算机内的表示与存储

主要有两种形式:(1)字符形式。即一个字节存放一个十进制数位或符号位,存放的是0~9十个数字和正负号的ASCII编码值。例如,+123的编码为

这种表示方式运算起来很不方便,因为它的高4位不具有数值的意义,它主要用在非数值计算的应用领域中。ASCII:(AmericanStandardCodeforInformationInterchange,美国信息互换标准代码)

7位二进制编码

0—9:31H---39HA—Z:41H---5AHa---z:61H---7AH回车:0DH换行:0AH空格:20H

(2)压缩的十进制数形式。用一个字节存放两个十进制数位,既节省了存储空间,又便于完成十进制数的算术运算。其值用BCD码或ASCII码的低4位表示。符号位也占半个字节并放在最低数字位之后,其值可从4位二进制码中的6种冗余状态中选用。例如,用C(12)表示正号,D(13)表示负号。并规定数字和符号位个数之和必须为偶数,否则在最高数字之前补一个0。例如:+123被表示成-12被表示成(2字节)(2字节)3.2带符号二进制数据的表示方法和加减运算真值:计算机外界的数.现表示为二进制.x1=+1011000x2=-101100机器数:在计算机中表示的带符号的二进制数,机器数有三种表示方式:原码、补码和反码。机器数的长度受字长限制。[x1]原=01011000[x2]原=1101100字长:运算器中表示处理数据的二进制位数.n=8例3.12:X=+0.1011,[X]原=01011X=-0.1011,[X]原=1-X=1-(-0.1011)=110111.原码表示法:(2)已知[x]原,求x[x]原=

x

n-1…x

1x

0则:当x

n-1=0时,x=+x

n-2…x

1x

0当x

n-1=1时,x=-x

n-2…x

1x

0(3)数值零在原码中有两种表示形式:[+0]原=00000,[-0]原=10000。(4)当字长为n时,原码表示范围:小数:-(1-2-(n-1))~+(1-2-(n-1))整数:-(2n-1-1)~+(2n-1-1)(5)原码表示的优缺点:优:数的原码与真值之间的关系比较简单。缺点:在机器中进行加减法运算时比较复杂。2.补码表示法:例3.13:X=+0.1011,[X]补=0.1011X=-0.1011,[X]补=2+X=2+(-0.1011)=1.0101简便:正数的补码同原码.负数补码:符号位:1,数值部分:绝对值求反加1.(1)(2)已知[x]补,求x[x]补=

x

n-1…x

1x

0则:当x

n-1=0时,x=+x

n-2…x

1x

0当x

n-1=1时,x=-(x

n-2…x

1x

0)求反加1(3)数值零的补码表示形式是唯一的,即:[+0]补=[-0]补=0.0000

(4)当字长为n时,补码表示范围:小数:-1~+(1-2-(n-1))整数:-2n-1~+(2n-1-1)(5)补码优点:当补码加法运算的结果不超出机器范围时,可得出以下重要结论:(1)用补码表示的两数进行加法运算,其结果仍为补码。(2)[X+Y]补=[X]补+[Y]补。(3)符号位与数值位一样参与运算。举例说明(例3.14,3.15,3.16,3.17,3.18,3.19)。补码加减法:数用补码表示,符号位参加运算。实际操作能否只取决于操作码?结果需不需修正?如何将减法转换为加法?基本关系式:(X+Y)补=X补+Y补

(1)

(X-Y)补=X补+(-Y)补

(2)式(1):操作码为“加”时,两数直接相加。3)X=3Y=–2X补=00011Y补=1111000001(+1补码)2)X=–3Y=–2X补=11101Y补=1111011011(–5补码)1)X=3Y=2X补=00011Y补=0001000101(+5补码)4)X=–3Y=2X补=11101Y补=0001011111(–1补码)例.求(X+Y)补(X+Y)补=X补+Y补

(1)

(X-Y)补=X补+(-Y)补

(2)式(2):操作码为“减”时,将减转换为加。1)X=4Y=–5X补=00100Y补=11011(-Y)补=0010101001(+9补码)2)X=–4Y=5X补=11100Y补=00101(-Y)补=1101110111(–9补码)例.求(X–Y)补Y补(–Y)补:将Y补变补不管Y补为正或负,将其符号连同尾数一起各位变反,末位加1。即将减数变补后与被减数相加。X补=00100

Y补=11011X补=11100

Y补=00101注意:某数的补码表示与某数变补的区别。例.10101原11011补码表示10011补01101变补例.10101原

1101100101原00101补码表示符号位不变;

00101原

00101

10101原

1

1011

00101原

00101负数尾数改变,正数尾数不变。00011补1110110011补

0110100011补

1110110011补

0110100011补

11101变补符号位改变,尾数改变。补码的机器负数算法流程操作数用补码表示,符号位参加运算结果为补码表示,符号位指示结果正负X补+Y补X补+(-Y)补ADDSUB逻辑实现A(X补)B(Y补)+AABB+B+B+1CPAA(1)控制信号加法器输入端:+A:打开控制门,将A送。+B:打开控制门,将B送。+1:控制末位加1。+B:打开控制门,将B送。加法器输出端:A:打开控制门,将结果送A输入端。CPA:将结果打入A。(2)运算器粗框3.反码表示法:当X为正数时:[X]反=[X]原;当X为负数时:保持[X]原符号位不变,而将数值部分取反。反码运算是以2-2-n为模,所以,当最高位有进位而丢掉进位(即2)时,要在最低位+1。(2)反码零有两种表示形式:[+0]反=0.0000,[-0]反=1.1111(3)反码运算在最高位有进位时,要在最低位+1,此时要多进行一次加法运算,增加了复杂性,又影响了速度,因此很少采用。

从以上讨论可见,正数的原码、补码和反码的表示形式是相同的,而负数则各不相同。4.整数的表示形式小数点隐含位置不同.设X=Xn…X2X1X0,其中Xn为符号位。3.2.2加减法运算的溢出处理

当运算结果超出机器数所能表示的范围时,称为溢出。显然,两个异号数相加或两个同号数相减,其结果是不会溢出的。仅当两个同号数相加或者两个异号数相减时,才有可能发生溢出的情况,一旦溢出,运算结果就不正确了,因此必须将溢出的情况检查出来。溢出有正溢和负溢,也称上溢和下溢。最高有效位有进位而符号位无进位是正溢,最高有效位无进位而符号位由进位是负溢今以4位二进制补码正整数加法运算为例说明如下:

在上例中,①、②、⑤和⑥得出正确结果,③和④为溢出。判别溢出的几种方法:

今以fA,fB表示两操作数(A、B)的符号位,fS为结果的符号位。符号位fA、fB直接参与运算,它所产生的进位以Cf表示。在以2n+1为模的运算中符号位有进位,并不一定表示溢出,今将判别溢出的几种方法介绍如下:(1)当符号相同的两数相加时,如果结果的符号与加数(或被加数)不相同,则为溢出例3.28中③和④。即在计算机中判溢出的逻辑电路如图3.2所示,图3.2(a)和图3.2(b)是两种不同逻辑电路,但其结果是相同的。A=10B=710+7:01010

0011110001A=-10B=-7-10+(-7):011111011011001

(2)当任意符号两数相加时,如果C=Cf,运算结果正确,其中C为数值最高位的进位,Cf为符号位的进位。如果C≠Cf,则为溢出,所以

溢出条件=C⊕Cf。例3.28中的③和④即为这种情况。其逻辑电路见图3.3。正确0001100010(1)A=3B=23+2:00101(2)A=10B=710+7:010100011110001正溢正确负溢正确正确(3)A=-3B=-2-3+(-2):110111110111110(4)A=-10B=-7-10+(-7):011111011011001(5)A=6B=-46+(-4):000100011011100(6)A=-6B=4-6+4:111101101000100Cf=0C=0Cf=0C=1Cf=1C=1Cf=1C=0Cf=1C=1Cf=0C=0111111(3)采用双符号位fS1,fS2。正数的双符号位为00,负数的双符号位为11。符号位参与运算,当结果的两个符号位fS1,fS2不相同时,为溢出。所以

溢出条件=fS1⊕

fS2,或者其逻辑电路如图3.4所示。见例3.29。(1)3+2:正确000011000010000101(2)10+7:001010000111010001正溢正确负溢正确正确(3)-3+(-2):110111111101111110(4)-10+(-7):101111110110111001(5)6+(-4):000010000110111100(6)-6+4:111110111010000100第一符号位Sf1第二符号位Sf23.2.3定点数和浮点数

在计算机中的数据有定点数和浮点数两种表示方式:

1.定点数

定点数是指小数点固定在某个位置上的数据,一般有小数和整数两种表示形式。

数值位(n-1位)符号位(1位)小数整数2.浮点数浮点数是指小数点位置可浮动的数据,通常以下式表示:

N=M*RE其中,N为浮点数,M(mantissa)为尾数(纯小数),E(exponent)为阶码(整数),R(radix)称为“阶的基数(底)”,而且R为一常数,一般为2、8或16。在一台计算机中,所有数据的R都是相同的,于是不需要在每个数据中表示出来。

Ms是尾数的符号位,设置在最高位上。E为阶码,有n+1位,一般为整数,其中有一位符号位,设置在E的最高位上,用来表示正阶或负阶。常用补码和移码表示.M为尾数,有m位,由Ms和M组成一个定点小数。Ms=0,表示正号,Ms=1,表示负号。常用补码表示.浮点数的机内表示一般采用以下形式:规格化:当R=2,且尾数值不为0时,其绝对值应大于或等于(0.5)10。对非规格化浮点数,通过将尾数左移或右移,并修改阶码值使之满足规格化要求。假设浮点数的尾数为0.0011,阶码为0100(设定R=2),规格化时,将尾数左移2位,而成为0.1100,阶码减去(10)2,修改成0010,浮点数的值保持不变。机器零:①当一个浮点数的尾数为0(不论阶码是何值),②阶码的值比能在机器中表示的最小值还小时,计算机都把该浮点数看成零值,称为机器零。根据IEEE754国际标准,常用的浮点数有两种袼式:(1)单精度浮点数(32位),阶码8位,尾数24位(内含1位符号位)。(2)双精度浮点数(64位),阶码11位,尾数53位(内含1位符号位)。

移码的定义如下

(当阶码为n+1位二进制整数其中最高位为符号位时):[X]移=2n+X-2n≤X<2n(3.11)补码与移码之间的关系:符号位相反,数值部分不变。例3.30X=+1011[X]补=01011[X]移=11011X=-1011[X]补=10101[X]移=00101移码具有以下特点:

(1)最高位为符号位,1表示正号,0表示负号。(2)在计算机中,移码(阶码)只执行加减法运算,且需要对得到的结果加以修正,修正量为2n,即要对结果的符号位取反,得到[X]移。设X=+1010y=+0011,则[X]移=1.1010[Y]移=1.0011执行加法运算[X]移+[Y]移=1.1010+1.0011=101101,加2n后得[X+Y]移,[X+Y]移=01101+10000=11101(3)数据0有唯一的编码,即[+0]移=[-0]移=1000...0。3.计算机中数据的数值范围和精度数值范围是指机器所能表示的一个数的最大值和最小值之间的范围。数据精度是指一个数的有效位数。因此,数值范围和数据精度是两个不同的概念。例如,32位定点小数(补码)的范围为-1~1-2-31,定点整数(补码)的范围是-231~+231-

1,数据精度为31位。浮点数由于阶码的存在而扩大了数据的范围。例如,标准的32位单精度数,其数值的可表示范围为-2127~(1-2-23)·2127,精度为24位。因此用于科学计算的计算机一般都有浮点处理器。补充:移位操作1.移位类型逻辑移位算术移位

:数码位置变化,数值不变。:数码位置变化,数值变化,符号位不变。移位寄存器:2.移位逻辑在寄存器中移位(串行接口中)。D4D3D2D1D4D3D2右移左移D3D2D1移位门:斜位传送(运算器中)。左斜右斜4312门4门3门2门1(1)单符号位:0011101110

(2)双符号位:001110

0001113.正数补码移位规则(3)移位规则左移右移右移0

01110

0011左移左移右移右移011100

00

111000

0111数符不变(单:符号位不变;双:第一符号位不变)。空位补0(右移时第二符号位移至尾数最高位)。易出错处:001110:001100左右011100:000110(1)单符号位:1101110110

(2)双符号位:101100

1101104.负数补码移位规则(3)移位规则左移右移右移1

10111

1101左移右移右移11

011011

1011数符不变(单:符号位不变;双:第一符号位不变)。左移空位补0(第二符号位移至尾数最高位)。易出错处:110110:111100左右101100:111110右移空位补1舍入方法1.0舍1入(原码、补码)例.000100原00010原

100101原10011原

111011补11110补

2.末位恒置1(原码、补码)例.000100原00011原

111011补11101补

100101原10011原

100101原10011原

111011补11101补

3.3定点乘法运算3.3.1定点数一位乘法一.原码一位乘法

每次用一位乘数去乘被乘数。

1.算法分析乘法部分积累加、移位。例.0.1101×0.1011乘积P=X×Y积符SP=SXSY(1)手算0.1101×0.101111011101000011010.10001111上符号:0.10001111部分积改进:1)将一次相加改为分步累加;即每次得一个相加数,就与上次部分积相加.2)相加数左移改为部分积右移,即前一次部分积的最低位,不再参与运算,可将其右移一位,相加数可直接送而不必左移,N位加法器实现两个N位数相乘.3)_部分积右移时,乘数寄存器同时右移一位,这样可以用乘数寄存器的最低位控制相加数,同时乘数寄存器的最高位可接受部分积右移出来的一位.问题:1)加数增多(由乘数位数决定)。

2)加数的位数增多(与被乘数、乘数位数有关)。(2)分步乘法每次将一位乘数所对应的部分积与原部分积的累加和相加,并移位。设置寄存器:A:存放部分积累加和、乘积高位B:存放被乘数C:存放乘数、乘积低位

设置初值:A=00.0000B=X=00.1101C=Y=00.1011

步数条件操作AC00.0000.1011

1)Cn=1+BCn+00.110100.110100.01101.1012)Cn=1+B+00.110101.001100.100111.103)Cn=0+0+00.000000.100100.0100111.14)Cn=1+B+00.110101.000100.10001111X原×Y原=0.100011112.算法流程0A、XB、YC、nCdCn=1?Cd=0?1/2(A+B)A,C1/2(A+0)A,CCd-1CdYYNNSx+SySA

3.运算规则(1)操作数、结果用原码表示;(2)绝对值运算,符号单独处理;(3)被乘数(B)、累加和(A)取双符号位;(4)乘数末位(Cn)为判断位,其状态决定下步操作;(5)作n次循环(累加、右移)。

4.逻辑实现1.算法分析

X补=X0.X1X2……Xn(1)Y为正:Y补=0.Y1Y2……Yn

(XY)补=X补(0.Y1Y2……Yn)(2)Y为负:Y补=1.Y1Y2……Yn

(XY)补=X补(0.Y1Y2……Yn)+(-X)补(3)Y符号任意:

(XY)补=X补(0.Y1Y2……Yn)+(-X)补Y0符号位二.补码一位乘法(4)展开为部分积的累加和形式:(XY)补=X补(0.Y1Y2……Yn)+(-X)补Y0

=X补(0.Y1Y2……Yn)-X补Y0

=X补(-Y0+2Y1+2

Y2+……+2Yn)-1

-2

-n

=X补-Y0+(Y1-2Y1)+(2Y2-2Y2)+……-1

-1-2-(n-1)-n

+(2Yn-2Yn)

=X补(Y1-Y0)+2(Y2-Y1)+2(Y3-Y2)+……-1-2

+2(0-Yn)-n

+2(0-Yn)-nYn+1

=X补

(Y1-Y0)+2(Y2-Y1)+2(Y3-Y2)+……-1-2

+2(0

-Yn)-nYn+1比较法:用相邻两位乘数比较的结果决定+X补、

-X补或+0。

2.比较法算法Yn(高位)Yn+1(低位)操作(A补为部分积累加和)00011011

1/2A补1/2(A补+X补)1/2(A补-X补)1/2A补(0)(1)(-1)(0)3.运算实例X=-0.1101,Y=-0.1011,求(XY)补。初值:A=00.0000,B=X补=11.0011,-B=(-X)补=00.1101,C=Y补=1.0101步数条件操作AC00.00001.0101

1)10-BCn+00.110100.110100.011011.01012)01+B+11.001111.100111.1100111.0103)10-B+00.110100.100100.01001111.014)01+B+11.001111.011111.101111111.00

Cn+1CnCn+15)10-B+00.1101B=X补=11.0011,-B=(-X)补=00.1101(XY)补

=0.100011114)01+B+11.001111.011111.101111111.05)10-B+00.110100.10001111修正(1)A、B取双符号位,符号参加运算;(2)C取单符号位,符号参加移位,以决定最后是否修正;(3)C末位设置附加位Cn+1,初值为0,CnCn+1组成判断位,决定运算操作;(4)作n步循环,若需作第n+1步,则不移位,仅修正。

4.运算规则1.0:-B修正0.1:+B修正0.0:不修正1.1:不修正3.3.2原码两位乘法

每次用两位乘数去乘被乘数。

1.算法分析Yi(高位)Yi+1(低位)部分积累加、移位00011011

1/4A1/4(A+X)1/4(A+2X)1/4(A+3X)(0)(1)(2)(3)0X2X3X如何实现+3X操作?

1/4(A+3X)=000001010011操作

1/4(A+2X+X)=1/4(A+2X)+1/4X

1/4(A-X+4X)=1/4(A-X)+X①①②②

1/4(A+2X+X)=1/4(A+2X)+1/4X

1/4(A-X+4X)=1/4(A-X)+X①①②②

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论