数据表示方法-欢迎光临长春金融高等专科学校ppt课件_第1页
数据表示方法-欢迎光临长春金融高等专科学校ppt课件_第2页
数据表示方法-欢迎光临长春金融高等专科学校ppt课件_第3页
数据表示方法-欢迎光临长春金融高等专科学校ppt课件_第4页
数据表示方法-欢迎光临长春金融高等专科学校ppt课件_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

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

文档简介

1、第二章 数据表示方法2-1 数据表示方法和运算器 2-2 逻辑部件 2-3 控制部件 .21 数据表示方法和运算器 211计算机中数据的表示方法 当前的计算机所采用的存储器件都是两态器件,所以适宜于存放二进制数据。虽然为了方便起见,也运用其他进制,如十进制、十六进制,但是在计算机内部数据还是以二进制的方式存放和处置。二进制只运用了两个不同的数字符号,易于用物理器件来实现:在物理世界中具有两个稳定形状的物理器件很多,如晶体管的“截止与“导通、电容的“充电与“放电、电压信号的“高与“低、脉冲的“有与“无,电磁单元的“正向磁化与“反向磁化等等,只需规定其中一种稳定形状表示“1,另一种稳定形状表示“0

2、,就可以用来表示二进制数位了。其次,二进制的运算规那么非常简单,易于用电子器件来实现。数据的类型多种多样,如文件、图、表、树、阵列、链表、栈、向量、串、实数、整数、布尔数、字符等。计算机里用到的数据类型主要可分为两类:表示数量的数值数据和非数值性的符号数据。一切的数据都是以二进制的方式在计算机里处置和存储。本节主要讲述数值数据在计算机里的表示方法。 . 1数值数据表示方法 在计算机中表示数时,需求思索以下几个要素:要表示的数的类型(小数、整数、实数和复数)、符号如何表示以及小数点的位置;能够遇到的数值范围;数值准确度;数据存储和处置所需求的硬件代价。计算机中表示数值符号的方法是占用一位二进制位

3、,1表示负号、0表示正号。常用的数值数据表示格式有两种,根据小数点的位置是固定不变还是浮动变化的分为定点格式和浮点格式。普通来说,定点格式允许的数值范围有限,但要求的处置硬件比较简单。而浮点格式允许的数值范围很大,但要求的处置硬件比较复杂。 (1) 定点数的表示方法 所谓定点格式,即商定机器中一切数据的小数点位置是固定不变的。由于商定在固定的位置,小数点就不再运用记号“来表示。原理上讲,小数点位置固定在哪一位都可以,但是通常将数据表示成纯小数或纯整数。 . 例如用一个n1位字来表示一个定点数x,其中一位x0用来表示数的符号,其他位数代表它的量值。为了将整个n1位一致处置起见,符号位x0放在最左

4、位置,并用数值 0和1分别代表正号和负号,这样,对于恣意定点数x=x0 x1x2xn,在定点机中可表示为如下方式: x0 x1 x2 xn-1 xn符号 数量值 . 假设数x表示的是纯小数,那么小数点位于x0和x1之间。当x0 x1x2xn各位均为0时,数x的绝对值最小,当各位均为1时,x的绝对值最大,故数的表示范围为 0 x12n 假设数x表示的是纯整数,那么小数点位于最低位xn的右边,此时数x的表示范围为 0 x2n1,目前计算机中多采用定点纯整数表示,因此将定点数表示的运算简称为整数运算。 (2) 浮点数的表示方法 采用浮点表示法表示的数据叫做浮点数,采用浮点数进展运算的机器叫做“浮点机

5、。浮点数是指小数点位置可以改动的数,显然浮点数可用来表示带符号的实数。例如:表示8位字长的二进制浮点数可以写成 0.10110101 2111 尾 数 阶码 . 恣意一个十进制数N可以写成 N = 10ZX ,同样,在计算机中一个恣意进制数N可以写成 N = Bz X其中X称为浮点数的尾数,是一个纯小数。z是比例因子的指数,称为浮点的指数,是一个整数。比例因子的基数B是一个常数,普通规定只为2,8或16。在机器中表示一个浮点数时,一是要给出尾数,用定点小数方式表示。尾数部分给出有效数字的位数,因此决议了浮点数的表示精度。二是要给出指数,用整数方式表示,常称为阶码,阶码指明小数点在数据中的位置,

6、因此决议了浮点数的表示范围。浮点数也要有符号位。因此一个机器浮点数该当由阶码和尾数及其符号位组成: . 32位浮点数的规范格式为: Z0Z1 Z2 Zn-1 ZnX0X1 X2 Xn-1 Xn阶符 阶码 数符 尾数 3130 2322 032位浮点数F Z X 64位浮点数的规范格式为: 6362 5251 064位浮点数F Z X . 不论是32位浮点数还是64位浮点数,规定基数B2。由于基数2是固定常数,不用用显示方式来表示它。 32位的浮点数中,F是浮点数的符号位,占1位,安排在最高位,F0表示正数,F1表示负数。X是尾数,放在低位部分,占用23位,用小数表示,小数点放在尾数域的最前面。

7、Z是阶码,占用8位,阶符采用隐含方式,即采用移码方法来表示正负指数。移码方法对两个指数大小的比较和对阶操作都比较方便,由于阶码域值大者其指数值也大。采用这种方式时,将浮点数的指数值z变成阶码Z时,应将指数z加上一个固定的偏移值127(01111111),即Zz127。一个规格化的32位浮点数X的值可表示为X(1)F(1X) 2E127 其中尾数域所表示的值是1X。由于规格化的浮点数的尾数域最左位也即最高有效位总是1,故这一位经常不予存储,而以为隐藏在小数点的左边。 . 64位的浮点数中符号位1位,阶码域11位,尾数域52位,指数偏移值是1023。因此规格化的64位浮点数X的真值为X=(1)F

8、(1X) 2E1O23 zE1023 假设不对浮点数的表示作出明确规定,同一个浮点数的表示就不是独一的。例如05也可以表示成005101,50102等等。为了提高数据的表示精度,当尾数的值不为0时,其绝对值应05,即尾数域的最高有效位应为1,否那么要以修正阶码同时左右移小数点的方法,使其变成这一要求的表示方式,这称为浮点数的规格化表示。当一个浮点数的尾数为0,不论其阶码为何值,或者当阶码的值遇到比它能表示的最小值还小时,不论其尾数为何值,计算机都把该浮点数看成零值,称为机器零。 浮点数所表示的范围远比定点数大的多。假设(思索符号位)机器中的数由8位二进制数表示时:在定点机中这8位全部用来表示有

9、效数字(包括符号);在浮点机中假设阶符阶码占3位,数符尾数占5位。在此情况下,假设只思索正数值,定点机小数表示的数的范围是00000000到01111111,相当于十进制数的0到127,而浮点机所能表示的数的范围是21100001到21101111,相当于十进制数的112875。显然,都用8位,浮点机能表示的数的范围比定点机大得多。 . 一台计算机中终究采用定点表示还是浮点表示,要根据计算机的运用条件来确定。普通在高档微机以上的计算机中同时采用定点、浮点表示,由运用者进展选择。而单片机中多采用定点表示。 【例21】假设浮点数X0的二进制存储格式为(43240000)16,求其32位浮点数的十进

10、制值。 解: 将16进制数展开后,可得二制数格式为 0 100 0011 0 010 0100 0000 0000 0000 0000 F 阶码(8位) 尾数(23位) 指数z阶码127100001100111111100000111(7)10。包括隐藏位1的尾数1X1010 0100 0000 0000 0000 00001010010 于是有 X0(1)F 1X 2z(1010010) 2710100100(187)10。 . 【例22】将十进制数1659375转换成32位浮点数的二进制格式来存储。 解:首先分别将整数和分数部分转换成二进制数:16593751000010011挪动小数点,

11、使其在第1位和第2位之间10000100111000010011 24 z4 所以:F=0,E=4127 =131,X=000010011 那么得到的32位浮点数的二进制存储格式为: 0100 0001 1000 0100 1100 0000 0000 0000 = 4184C00016 . (3)定点数据的编码方法 真值与机器码机器码是数在计算机中的表示方式。对于数值数据而言,无论以定点方式表示或是以浮点方式表示,都需求经过某种编码 方法,以计算机所能处置的0和1二进制位来表示其数值大小。通常一个数值数据的机内表示方式称为其机器码,而一个机器码所代表的数值称为该机器码的真值。计算机中只需机器

12、码,不存在数的真值。假设机器码的宽度为n,最高位为符号位,下面分别引见实践运用中常见的4种机器码编码方法:原码、反码、补码和移码。 原码表示法定点整数原码表示法定点整数原码的定义如下所示: . X 原= X 0X2n1 X 原=2n1X 2n1X0 由定义可以看出,正整数的原码就是其本身,负整数的原码只需把其绝对值的原码的符号位置为1即可。( 用0表示正号,用1表示负号)。原码表示方法的定点整数的取值范围为(2n1)X2n11。留意在原码表示法中,零有正零和负零之分。000000,010000。定点小数的原码表示法定点小数原码的定义如下所示:X 原 X 0X1X 原1X 1X0. 正的纯小数的

13、原码就是其本身,而负的纯小数的原码可以经过把其绝对值的原码的符号位置1来得到。其取值范围为(12(n1)X(12(n1)。综上可以看出一个数的原码是由符号位加上数值位绝对值组成,符号位为0代表正数,符号位为1代表负数。由于0有0和0两种表示方法,n位二进制数可以表示2n1个原码。 用原码实现乘除运算规那么较简单,但做加减运算不方便。原码表示法的一个主要优点在于其真值和机器码表示之间对应关系很直观,容易转换。补码表示法定点整数的补码表示定点整数补码的定义如下所示:X 补 X 0X2n1X 补2nX 2n1X0. 正整数的补码就是其本身,负整数的补码可以经过对其绝对值部分逐位求反,并在最低位加1求

14、得。同样,在补码表示法中,符号位为0表示正号,为1表示负号。其表示的真值X的范围为 2n1X2n11。在补码表示中,0的机器码是独一的,没有0和0之分。定点小数的补码表示定点小数补码的定义如下所示:X 补 X 0X1X 补2X 1X0定点小数的补码求解方法与定点整数的补码求解方法相类似。其表示的真值X的范围为1X12-(n-1)。当n8时,1的定点小数补码表示为:10000000,而用定点整数的补码表示1,那么为11111111。 在补码表示方法中,0的编码是独一的,所以n位二进 制数可以表示2n个补码。 . 反码表示法定点整数的反码表示定点整数反码的定义如下所示: X 反 X 0X2n1 X

15、 反(2n1)X 2n1X0同样,正整数的反码就是其本身,而负整数的反码可以经过对其绝对值逐位求反来求得。在反码表示法中,符号位依然用0表示正号,1表示负号。其表示的真值范围与原码一样:(2n11)X2n-11。数值0用反码表示亦有0和0之分。当n8时,0反00000000,0反11111111。定点小数的反码表示定点小数反码的定义如下所示:X 反 X 0X1X 反(22n1)X 1X0.定点小数的反码求解方法类似定点整数的反码求解方法。其表示的真值的取值范围为:(12(n1)X(12(n1)。反码表示法中,由于0占有了两个不同的编码,所以,n位二进制数可以表示2n1个反码。移码表示法定点整数

16、的移码表示 X 移2n1X 2n-1X2n1 定点小数的移码表示 X 移1X 1X1移码的符号位与其他三种编码不同,用1表示正号而0表示负号。移码的求法其实也很简单,把其补码的符号位直接变反即可。所以在移码表示法中,0也有独一的表示方法:10000000(n8) 【例】 设机器码长度为8,求X(6)10的原码、补码、反码和移码。 . 解:X原码27(110)1000000011010000110 X补码28(110)1000000011011111010 X反码(281)(110)1111111111011111001 X移码27(110)1000000011001111010【例】 设机器码

17、长度为8,求X(03125)10(00101)2的原码、补码、反码和移码。 解:X原码1X10(00101)1010110101000 X补码2X100(00101)1101111011000 X反码(227)X(10000000001)(00101)11010111 X移码1X10(00101)0101101011000 .实践上求某个数的原码、补码、反码和移码时不仅可以利用其定义式采求解,也可以经过这4个编码间的相互关系来求得。比如移码就可以经过把补码的符号位变反来求,而对于正数来讲其原码、补码和反码是完全一样的;一个负数的补码也可以很容易地从其原码推知:除符号位外,各位取反,末位再加1即

18、可。(4)浮点数据的编码方法计算机内部浮点数据表示成如下方式:FXZX. FX是尾数的符号位,0表示正号而l表示负号;Z是阶码,通常用移码表示;X是定点小数方式的尾数,普通用补码或原码表示。【例2】 某浮点数机器码10位,基数为2,阶码用4位移码表示,尾数5位用补码表示,符号位1位。求2100110l的编码。解: 符号位FX0 阶码Z(10)移码1010 尾数X(01101)补码11010 那么其编码为0101011010【例 】 某浮点数机器码为17位,基数为2,阶码用4位移码表示,尾数用12位补码表示,符号位1位。求275的浮点编码方式。解:首先把275表示成浮点方式: (275)10(0

19、687522)10(01011)22(10) FX1 . Z(10)移码1010 X(01011)补码010100000000 编码为11010010100000000 同一个浮点数可以有许多种不同的编码表示(改动其阶码),所以需求对浮点数进展规格化处置,以一致其方式,同时提高数据的表示精度。规格化处置(基数为2)尾数部分以纯小数方式表示,其绝对值应满足05X1。假设不满足该条件,那么需求修正阶码并对尾数进展移位,以使尾数满足该条件; 当尾数为正时,无论其运用原码还是补码表示,X应满足条件:05X1。以二进制方式表示为X01xx x(x为0或1); 用原码表示的负尾数,X满足1X05,以二进制

20、方式表示为M11 xx x(x为0或1);以补码表示的负尾数,X满足1M05,以二进制方式表示为X10 xx x(x为0或1); 从上面的讨论可以看出,假设规格化的尾数用原码表示,那么其最高位一定为1假设改用补码表示,那么尾数的最高位与其符号位相反,即为0。 . 2符号数据的表示方法 现代计算机不仅处置数值领域的问题,而且处置大量非数值领域的问题。这样一来,必然要引入文字、字母以及某些公用符号,以便表示文字言语、逻辑言语等信息。例如人机交换信息时运用英文字母、标点符号、十进制数以及诸如$,等符号。然而数字计算机只能处置二进制数据,因此,上述信息运用到计算机中时,都必需编写成二进制格式的代码,也

21、就是字符信息用数据表示,称为符号数据。最常见的编码格式为ASC码和EBCDIC码。1ASC码目前国际上普遍采用的一种字符系统是七单位的ASCII码(美国国家信息交换规范字符码),它包括10个十进制数码,26个英文字母和一定数量的公用符号,如$,等,总共128个元素,因此二进制编码需求7位,加上一个偶校验位,共8位,刚好为一个字节。表21列出了七单位的ASCII码字符编码表。 ASCII码规定8个二进制位的最高一位为0,余下的7位可以给出128个编码,表示128个不同的字符。其中95个编码,对应着计算机终端能输人并且可以显示的95个字符,打印机设备也能打印这95个字符,如大小写各26个英文字母,

22、09这10个数字符,通用的运算符和标点符号,*,等等。 另外的33个字符,其编码值为031和127,那么不对应任何一个可以显示或打印的实践字符,它们被用作控制码,控制计算机某些外围设备的任务特性和某些计算机软件的运转情况。. 计算机里的存储和传送单位通常运用Byte(1Byte8 bit),所以7位的ASCII码也用一个字节来表示。ASCII编码和128个字符的对应关系如表21所示。表中编码符号的陈列次序为,最高1位没有运用,通常填0;也可以把它用作校验位或者用来扩展字符集。表中未给出,列为高位部分,行为低位部分。 ASCII的字符编码表一共有2416行,238列。低4位编码用作行编码,而高3

23、位用作列编码。值得留意的一点是数字“0到“9的编码:它们都位于3列 (011),从0行(0000)陈列到9行(1001),即“0的ASCII码为(0110000)2(30)16,“9的 ASCII码为(0111001)2(39)16。把高3位屏蔽掉,低4位恰是“0“9的二进制码。可以看出,十进制的8421码可以去掉(011)而得到。这个特点使得在数字符号(ASCII码)与数字值(二进制码)之间进展转换非常方便。 .表21 ASC字符编码表 0000010100111001011101110000NULDELSP0Pp0001SOHDC1!1AQaq0010STXDC22BRbr0011ETXD

24、C3#3CScs0100EOTDC4$4DTdt0101ENQNAK%5EUeu0110ACKSYN&6FVfv0111DELETB7GWgw1000BSCAN(8HXhx1001HTEM)9IYiy1010LFSUB*:JZjz1011VTESC+;Kk1100FFFS,Nn1111SIUS/?OoDEL.字符串是指延续的一串字符,通常方式下,它们占用主存中延续的多个字节,每个字节存一个字符。当主存字由2个或4个字节组成时,在同一个主存字中,既可按从低位字节向高位字节的顺序存放字符串内容,也可按从高位字节向低位字节的次序顺序存放字符串内容。这两种存放方式都是常用方式,不同的计算机可以选用其中

25、任何一种。例如下述字符串: 图2-1字符串在主存中的存放 . IF AB ELSEREAD (C) 就可以按图21所示从高位字节到低位字节依次存放在主存中。其中主存单元长度由4个字节组成。每个字节中存放相应字符的ASCII值,文字表达式中的空格“在主存中也占一个字节的位置。因此每个字节分别存放十进制的73,70,32,65,62,66,32,69,76,83,69,32,82,69,65,68,40,67,41,32。2EBCDIC码EBCDIC(Extended Binary Coded Decimal Interchange Code)即所谓扩展的二十进制交换码。采用8 bit编码来表示一

26、个字符,共可以表示28256个不同符号,但EBCDIC中并没有运用全部编码,只选用了其中一部分,剩下的保管作扩展用。EBCDIC码常用于IBM大型机中。在EBCDIC码制中,数字“0“9的高4位编码都是1111,而低4位编码那么依次为0000到1001。把高四位屏蔽掉,也很容易实现从EBCDIC码到二进制数字值的转换。 .3汉字的表示方法1 汉字的输入编码为了能直接运用西文规范键盘把汉字输入到计算机,就必需为汉字设计相应的输入编码方法。当前采用的方法主要有以下三类: 数字编码 常用的是国标区位码,用数字串代表一个汉字输入。区位码是将国家 规范局公布的6763个两级汉字分为94个区,每个区分94

27、位,实践上把汉字表示成二维数组,每个汉字在数组中的下标就是区位码。区码和位码各两位十进制数字,因此输入一个汉字需按键四次。例如“中字位于第54区48位,区位码为5448。数字编码输入的优点是无重码,且输入码与内部编码的转换比较方便,缺陷是代码难以记忆。 拼音码 拼音码是以汉语拼音为根底的输入方法。凡掌握汉语拼音的人,不需训 练和记忆,即可运用。但汉字同音字太多,输入重码率很高,因此按拼音输入后还必需进展同音字选择,影响了输入速度。 . 字形编码 字形编码是用汉字的外形来进展的编码。汉字总数虽多,但是由一笔 一划组成,全部汉字的部件和笔划是有限的。因此,把汉字的笔划部件用字母或数字进展编码,按笔

28、划的顺序依次输入,就能表示一个汉字。例如五笔字型编码是最有影响的一种字形编码方法。 除了上述三种编码方法之外,为了加快输入速度,在上述方法根底上,开展了词组 输入、联想输入等多种快速输入方法。但是都利用了键盘进展“手动输入。理想的输入方式是利用语音或图像识别技术“自动将拼音或文本输入到计算机内,使计算机能认识汉字,听懂汉语,并将其自动转换为机内代码表示。目前这种理想曾经成为现实。2 汉字的存储汉字内码 汉字内码是用于汉字信息的存储、交换、检索等操作的机内代码,普通采用两个字节表示。英文字符的机内代码是七位的ASCII码,当用一个字节表示时,最高位为“0。为了与英文字符能相互区别,汉字机内代码中

29、两个字节的最高位均规定为“1。例如汉字操作系统CCDOS中运用的汉字内码是一种最高位为“l的两字节内码。 有些系统中字节的最高位用于奇偶校验位,这种情况下用三个字节表示汉字内码。 . 3 汉字的输出汉字字模码 字模码是用点阵表示的汉字字形代码,它是汉字的输出方式。根据汉字输出的要求不同,点阵的多少也不同。简易型汉字为16 16点阵,提高型汉字为24 24点阵、32 32点阵,甚至更高。因此字模点阵的信息量是很大的,所占存储空间也很大。以16 16点阵为例,每个汉字要占用32个字节,国标两级汉字要占用 256K字节。因此字模点阵只能用来构成汉字库,而不能用于机内存储。字库中存储了每个汉字的点阵代

30、码。当显示输出或打印输出时才检索字库,输出字模点阵,得到字形。图 22示出了“大字的点阵及编码。留意,汉字的输入编码、汉字内码、字模码是计算机中用于输入、内部处置、输出三种不同用途的编码,不要混为一谈。 .图22汉字的字模点阵及编码 .4校验码 元件缺点、噪声干扰等各种要素经常导致计算机在处置信息过程中出现错误。例如将1位x从部件A传送到部件B,能够由于传送信道中的噪声干扰而遭到破坏,以致于在接纳部件B收到的是而不是x。为了防止这种错误,可将信号采用专门的逻辑线路进展编码以检测错误,甚至校正错误。通常的方法是,在每个字上添加一些校验位,用来确定字中出现错误的位置。计算机中常用这种检错或纠错技术

31、进展存储器读写正确性或传输信息的检验。这里仅引见检错码中的奇偶校验码。最简单且运用广泛的检错码是采用一位校验位的奇校验或偶校验。设X(x0 x1 xn-1)是一个n位字,那么奇校验位 定义为 C x0 x1xn-1 式中代表按位加,阐明只需当X中包含有奇数个1时,才干使 1,即C0。 同理,偶校验位C定义为Cx0 x1xn-1 即X中包含偶数个1时,才使C0。 假设一个字X从部件A传送到部件B。在源点A,校验位C可用上面公式算出来,并合在一同将( x0 x1 xn-1 C )送到B。假设在B点真正接纳到的是X( x0 x1 xn-1 C ),然后计算 F( x0 x1 xn-1 C )假设F1

32、,意味着收到的信息有错,例如(x0 x1 xn-1)中正巧有一位变“反时就会出现这种情况。假设F0,阐明X字传送正确。奇偶校验可提供单个错误检测,但无法检测多个错误,更无法识别错误信息的位置。 . 【例】 知下表中左面一栏有5个字节的数据。请分别是用奇校验和偶校验进展编码,填在中间一栏和右面一栏。 解:假定最低一位为校验位,其他高8位为数据位,列表如下。从中看出,校验位的值取。还是取1,是由数据位中1的个数决议的。 数据偶校验编码奇校验编码101010101010101001010101010101010001010100101010100000000000000000000000000001

33、0111111101111111101111111011111111111111110111111111.212 计算机中算术运算和逻辑运算1二进制数的算术运算1 定点数运算 定点数加法减法运算定点数的加法和减法运算运用补码较为方便。对于定点小数的运算规那么如下: 加法:XY补X补y补 mod 2 减法:XY补X补y补 mod 2当运算结果超越了定点数的表示范围时,那么产生溢出(Overflow),常用的溢出检测机制主要有以下两种:进位判决法: 令Cn1表示次高位(最高数值位)向最高位(符号位)的进位,Cn那么表示符号位的进位,那么结果能否溢出的判决表如表22所示,即CnCn11时溢出。这里,

34、表示异或。 .表22 溢出的判决表 CnCn1OverflowCnCn100无溢出01溢出10溢出11无溢出. 【例.】X(100)10(01100100)2,Y(50)10(00110010)2,求XY。解: X补01100100,y补00110010 XY补X补y补10010110 CnCn11,表示结果溢出。【例.】X(100)l0(01100100)2,Y(50)l0(00110010)2,求XY。解: X补10011100,y补00110010 XY补X补Y补11001110 CnCn10,因此没有溢出。双符号位判决法: 采用两位二进制位来表示符号位:00正号,11负号,根据运算结果

35、的符号位也可以断定其能否溢出,其判决表如表23所示。 .表23 双符号位判决表 运算结果的符号位Overflow运算结果的符号位Overflow00无溢出10溢出01溢出11无溢出. 【例2.1】X(100)l0(01100100)2,Y(50)l0(00110010)2,求XY。解: X补001100100 Y补000110010 XY补X补y补010010110 其符号位为0 1,阐明结果溢出。 定点数乘法运算在作定点数的乘法运算时采用原码比较方便。通常运用原码一位乘法来求两个定点数的乘积。 运算规那么:乘积的符号位等于乘数和被乘数的符号位进展异或;乘积的值等于两数绝对值之积,即乘数和被乘

36、数的绝对值进展移位相加。算法:(用绝对值进展运算) 令X表示被乘数,Y表示乘数,P表示部分积以存放中间结果,flag用作判别位,count用作计数。 .令P0;count0;flag0; P和Y一同右移一位(P为高位部分,Y为低位部分),右移时P的最高位补0,P的最低位移入Y的最高位,Y的最低位移入到flag中; 假设flag1同PPX,否那么P不变; countcount1,假设count超越Y的位数那么运算停顿,否那么转到上述第2步继续执行; P和Y的内容就是所求乘积的绝对值,其中P存放积的高位,而Y存放积的低位。【例】 X(10)l0(1010)2,Y(6)10(0110)2,求X,Y。

37、解: X原1010,Y原0110乘积的符号位S 0 1 1。 .表24 定点数乘法运算表 执行动作部分积P乘数Y判别位Flagcounter初始化0000011000右移0000001101右移0000000112P+X1010右移0101000013P+X1111右移0111100004右移0011110005.那么所得乘积为(00111100)2(60)l0 定点数除法运算定点数的除法通常也常用原码进展。下面引见常用的加减交替法求两个数X和Y 的商。运算规那么:商的符号位同定点数原码乘法的处置方法,由两数的符号位进展异或;两数的绝对值部分进展相除;算法:(求XY,设X、Y的数值部分长度为N

38、) 令及RX,counter0; RRY;假设R为正那么商1,否那么商0; R左移一位,countercounter1; 假设上一次商为1那么RRY,否那么RRY; R为正那么商1,否那么商0; 假设R0或者counterN那么终了,否那么转到上述第3步执行。 . 2 浮点数运算在进展浮点运算之前,应先对浮点数进展规格化。浮点数的加减运算设有浮点数XM2i,YN2j,求XY或XY,其运算过程如下: 对阶:使两个数的阶码一样。令Kij,把阶码小的数的尾数右移K位,其阶码加上K。当右移尾数时,假设尾数用补码表示那么符号位参与移位,符号位不变,假设是原码,那么符号位不参与移位,尾数的最高位补0。 尾

39、数进展加、减运算: 规格化处置:假设尾数所得结果不是规格化的数,那么需对其进展规格化处置。当尾数溢出时,尾数向右规格化位,阶码加1;当尾数用补码表示,尾数的最高位与符号位一样时,应向左规格化,尾数每向左移一位,阶码减1,直到尾数最高位与符号位相反。 . 舍入操作:舍入的方法常用0舍1入,即当向右规格化时,假设移掉的最高位为1,那么在尾数末位加1,否那么舍去。另一种那么是“恒1法,即不论移走的数据为何值,尾数最末位恒置1。 溢出判别:以阶码为准。假设阶码上溢,那么结果溢出;假设阶码下溢,那么结果为0;否那么结果正确无溢出。 浮点数的乘除运算 浮点数相乘,其积的阶码为两数阶码相加,积的尾数为两尾数

40、相乘。浮点数相除,其商的阶码为两数阶码之差,商的尾数为两尾数相除。其结果都需求进展规格化处置,同时还需求判别其阶码能否溢出。 2逻辑代数及逻辑运算 逻辑代数是1849年英国数学家乔治布尔提出的以代数的方式对逻辑变量进展描画和分析的数学工具,又称布尔代数。逻辑变量的取值只需“真和“假,通常以1和0表示。 .1 根本的逻辑运算 “与(AND)运算 又称为逻辑乘运算,其运算符号通常用AND、或等表示。两个变量的“与运算的运算规那么如表24所示。即当A、B中任一变量取0值时,其运算结果为0。 表25 “与运算表 表26 “或运算表 ABZ=AB000010100111ABZ=A+B0000111011

41、11.“或(OR)运算 又称为逻辑加运算,其运算符号为OR、U、V或等。两个变量的“或运算规那么如表25所示。即当A、B中恣意一个取1值时,其运算结果为l。“非(NOT)运算 又称为逻辑求反运算。常用表示对变量A进展求反。其运算规那么很简单:0,。 “异或运算 常用的还有“异或运算,又称为半加运算,其运算符号为XOR或。异或运算是一种复合逻辑运算,可用上述根本逻辑运算表示如下:AB A BA B .22 逻辑部件 221 存放器 1存放器组(register block)概述CPU中的存放器通常可以分为两类:用户可见的存放器(user-visible registers)和形状控制存放器(co

42、ntrol and status registers)。 (1) 用户可见的存放器用户可以经过机器言语来访问这些存放器。合理优化地运用这些存放器可以减少对主存的访问次数,从而提高程序的执行速度。按其功能可以分为4类:通用存放器(general purpose register)通用存放器的用途由程序员编程决议,例如可以用来存放操作数,也可以用作寻址存放器。数据存放器(dataregister)数据存放器仅能用来存放数据而不能用来对操作数的地址进展计算。 .地址存放器(addressregister) 地址存放器用来存放操作数的地址,普通而言地址存放器又可以分为段地址存放器(segment po

43、inter register)、间址存放器(index register)和堆栈存放器(stack pointer register)。段地址存放器用在采用段式内存管理的计算机中,存放着某一段内存区域的基地址。间址存放器用在间接寻址(indexed addressing)方式下。堆栈存放器用以存放堆栈栈顶的地址,使得在运用堆栈操作(如push,pop)时无须显式地给出操作数的地址(即其地址是隐含的)。标志存放器(flagcondition codes register)标志存放器中的位是由CPU硬件根据运算的结果而设立的一些指示位,以反映该次运算的某些特征:结果为正、负、零、溢出等等,并可以用

44、作分支跳转的根据。普通而言,标志存放器允许编程者进展读操作,但不允许对其直接进展写操作。 .(2)形状控制存放器(CSR)这些存放器被控制器(control unit)用来控制CPU的操作。通常是程序员不可见的,但也有某些存放器在某种特定的形状下可以由某些特权指令进展访问。常见的CSR有:程序计数器(program counter,PC)、指令存放器(instruction register,IR)、存储器地址存放器(memoryaddress,register,MAR)、存储器缓冲存放器(memory buffer register,MBR)以及程序形状字(programstatusword

45、,PSW)。PC中存放着下一条待取指令的地址。当程序顺序执行时,CPU在取回一条指令后,会自动修正PC中的值以使其指向下一条指令。而程序中的分支或跳转指令也是经过修正PC中的值来到达改动流程的目的。IR中存放着CPU刚取回的指令,以供指令译码运用。CPU和存储器之间的数据交换经过MAR和MBR来实现。MAR中存放着待访问的内存单元的地址而MBR那么存放从内存中读人的数据或要写回内存单元的数据。这4个存放器(PC、IR、MAR、MBR)用来实如今CPU和存储器(memory)之间的数据交换。另外CPU内部,在ALU与MBR、用户可见的存放器之间也能够存在用作输入/输出缓冲存放器。 .2存放器逻辑

46、组成 存放器是计算机的一个重要部件,用于暂存数据、指令等。它由触发器和一些控制门组成。在存放器中,常用的是正边沿触发D触发器和锁存器。 图23所示是由正沿触发的D触发器组成的四位存放器。在CP正沿作用下,外部数据才干进入存放器。D是复位端,CP 是 D触发器的脉冲端,CK 是添加了个与逻辑门电路来取正沿脉冲的输入端。四D存放器的功能见表27,其中代表正脉冲,也即正沿。 .图23四D存放器 .表27 四D存放器功能表 控制和输入输出R DCK1D2D3D4D1Q2Q3Q4Q11D2D3D4D1D2D3D4D00000.现实上,在计算机中常要求存放器有移位功能。如在进展乘法时,要求将部分积右移;在

47、将并行传送的数转换成串行数时也需移位。有移位功能的存放器称为移位存放器。222 计数器计数器是计算机、数字仪表中常用的一种电路。计数器按时钟作用方式来分,有同步计数器和异步计数器两大类。在异步计数器中,由于高位触发器的时钟信号是由低一位触发器的输出来提供的,但是构造简单。同步计数器中各触发器的时钟信号是由同一脉冲来提供的,因此,各触发器是同时翻转的,它的任务频率比异步计数器高,但构造较复杂。计数器按计数顺序来分,有二进制、十进制两大类。在计算机中较少运用异步计数器,这里着重引见有并行输入数据功能的正向同步十进制计数器。图24是用主从JK触发器构成的同步十进制集成化计数器。同步计数器是采用快速进

48、位方式来计数的,触发器及实现快速进位的逻辑电路是它的中心。 .图24十进制同步计数器 .“预置数是集成化同步计数器的一个重要功能。普通设置控制端L,用来选择电路是执行计数还是执行预置数:当L1,执行同步计数;L0,执行预置数。由于JK触发器数据输入是双端的,所以要将单端的预置数AD经两级“与非门变成互补信号,再加在J,K端。图24所示与非门411就是为此目的而设置的。当L1时,这些与非门被封锁,快速进位电路输出经或门1215进入触发器,电路执行计数;当L0,门411翻开,快速进位被封锁,电路执行置数。 可以方便地扩展位数是集成化计数器的一个特点。下面引见扩展方法。计数器扩展应满足以下条件。 首

49、先,要有标志计数器已计至最大数的进位输出端RC,对二进制、十进制计数器,RC分别为: 二进制计数器:RCQAQBQCQD 十进制计数器:RCQAQD.其次,计数器应有坚持功能。图24计数器中设置了“计数允许端P和T,用来控制计数器快速进位电路和RC构成门:当P,T均为“1,快速进位电路才干翻开见表28,此时假设L1,那么电路处于计数形状;假设P0,T1,那么快速进位电路封锁,电路不能计数,此时假设L1,预置数也被封锁,又由于T1时RC构成门不封锁,所以各触发器形状及RC均坚持。有了RC,P,T端,就可以方便地对计数器进展扩展。表28 同步计数器功能表.PTLRDCK功能1111计数01并行输入

50、数据0111坚持011触发器坚持,RC=01异步清“0.223 译码器译码器有n个输入变量,2n个(或少于2n个)输出,每个输出对应于n个输入变量的一个最小项。当输入为某一组合时,对应的仅有一个输出为“1(或为“0),其他输出均为“0(或为“1)。译码器的用途是把输入代码译成相应的控制电位,以实现代码所要求的操作。图25给出了2输入4输出译码器的逻辑图。译码器中常设置“使能控制端正,当该端为“1时,译码器功能被制止,此时一切输出均为“1。使能端的一个主要功能是用来扩展输人变量数。.23 控制部件 控制器(见图26)担任控制整个计算机系统的运转,读取指令存放器、形状控制存放器以及从外部来的控制信

51、号(例如中断信号),发布外控制信号控制CPU与存储器、IO设备进展数据交换,发布内控制信号控制存放器间的数据交换,控制ALU完成指定的运算功能,并且管理其他的CPU内部操作。231 控制器的根本功能 控制器的根本功能就是时序(sequencing)控制和执行(execution)控制。根据当前运转的程序,控制器使CPU按一定的时序关系执行一系列的微操作(micro-operation),从而完成程序规定的动作。 .控制器的输入信号有:时钟信号、指令存放器、标志位、控制总线上的控制信号。控制器的输出信号包括:CPU内的控制信号、发往控制总线的控制信号。 时钟信号 控制器根据由时钟电路产生的时钟信

52、号进展定时,以控制各种操作按指定的时序进展。计算机的根本功能是执行程序,而程序由一连串的指令组成;计算机的执行过程由一连串的指令周期组成,每一指令周期完成一条机器指令。这些指令周期又可进一步细分为更小的单元,直到微操作(microoperation)CPU完成的根本的原子操作。时钟电路由时钟脉冲发生器、分频电路及各种外围电路组成。时钟脉冲发生器的晶振频率称为机器的主频,它产生的时钟脉冲信号是整个机器的时间基准,其周期T称为该计算机的时钟周期。执行一条机器指令所需的时间称为一个指令周期(instructioncycle),由于CPU机器指令的执行的时间通常互不一样,因此其指令周期也各不一样。为了

53、便于控制和管理,把指令周期进展分解,细化为各种原子操作(微操作,op),每一op都与CPU的存放器相关。完成一个微操作的时间就称为CPU周期(机器周期)。例如一条指令周期通常可分为取指子周期、执行子周期、保管结果子周期,而每一个子周期又由假设干原子周期CPU周期组成。 .2指令存放器(R)控制器需求完成取指令、分析指令和执行指令的操作。控制器根据程序计数器PC中的内容(指令地址)从存储器中取出该指令;然后对指令进展译码以确定所需执行的 op;最后控制器根据分析的结果发出一系列的控制信号控制各相关部件(运算器、存储器、IO设备)完成规定的操作;同时产生下一条指令的地址。MAR(PC)MBRMem

54、oryIR(MBR)PC(PC)13中断控制逻辑计算机系统通常都提供了中断机制,允许某一事件的发生(如由IO设备提出效力恳求)可以中止CPU正在执行的程序,转去对该事件进展处置,然后再前往原程序被中止处继续执行。中断机制的主要作用就是提高CPU的处置效率;使CPU与IO设备并行任务,当进展IO操作时CPU可以处置其他事务;同时使CPU可以及时地呼应各种预先不知的异常事件,并进展处置;还可以实现分时操作等等。 .(1) 中断处置过程 如图27所示,假设系统允许呼应中断恳求,那么在每条指令执行完成后,控制器都要检查能否有中断发生,假设没有中断恳求信号,控制器那么转去取下一条指令,假设有中断事件发生

55、,那么暂停执行当前程序并维护其现场形状信息(如下一条指令的地址、相关存放器的内容等等),然后转去执行中断效力程序。当完成中断效力后,再恢复以前保管的现场信息,从原程序被中止处(断点)继续执行。. 图27 计算机的中断机制 .通常把CPU中断处置过程分为两个阶段:中断呼应过程和中断效力过程。中断呼应过程CPU接受中断恳求后,就暂停执行当前程序,进人中断呼应过程:封锁中断:为了使CPU在中断效力后可以前往原程序断点处继续执行,在中断呼应期间,保管断点信息之前,需求封锁中断允许,制止CPU呼应新的中断恳求。保管断点信息:当CPU进入中断呼应过程,封锁中断允许后,控制器要维护当前正在执行的程序的断点信

56、息;把程序的断点即PC里的内容,以及PSW里的内容等推入系统堆栈。中断前往以后,再从堆栈中恢复现场信息,继续执行主程序。把中断效力程序的入口地址置人PC中:控制器保管完断点信息后,接着就把相应的中断效力程序入口地址置入程序计数器中去,CPU马上要执行的下一条指令就是中断效力程序的第一条指令。 中断效力过程当PC中置入中断效力程序的入口地址之后,接着保管现场信息,CPU开放中断允许呼应新的中断恳求,然后就转入中断效力程序,对中断事件进展处置。中断效力完成之后,CPU再次制止中断,以恢复现场和断点信息,使之前往到原主程序断点处继续执行。 .4总线控制逻辑计算机各个部件经过总线(BUS)相互衔接起来

57、,传送信息协调任务,共同完成操作。CPU内部各器件之间互连的总线称为内部总线,CPU与其他部件之间互连的总线称为外部总线(又称系统总线)。由于总线是共享的传输通道,恣意一时辰只能由一个器件担任发送数据,所以需求由总线控制器采协调各部件恳求运用总线。当发生多个设备争用总线时,仲裁电路会根据某种战略(如优先级)来决议运用总线的先后顺序。常用的仲裁方式主要有中央仲裁和分布式仲裁两种。232控制器的实现(硬布线逻辑微程序控制)控制器的作用就是根据输入的时钟信号、指令信息以及各种形状信号产生相应的控制信号去控制各个部件完成特定的操作。控制器的逻辑设计中包括时序逻辑(控制微操作的时序关系)、译码逻辑(对指

58、令操作码进展译码分析)、执行逻辑(按一定的顺序执行微操作)和决策逻辑(根据ALU等部件的标志位来决议下一步的动作)。控制器的实现方法主要有两种:硬布线逻辑(hard wired implementation)和微程序控制(microprogrammed implementation)。 .1硬布线逻辑在这种机制下,控制器根本上由组合电路实现,因此这种方法又称之为组合逻辑实现(图28)。(1)指令译码控制器分析每条待执行的指令,对不同的操作码产生不同的控制信号。为了简化设计,可以由一个译码器来完成操作码的识别功能,一个n位输入的译码器可以识别2n条不同的指令操作码,为每一条操作码产生不同的输出信号。(2)定时(一个指令所产生的输出控制信号是有时序关系的)控制器利用输入的时钟信号作为产生各种控制信号的定时信号。由于控制器在一个指令周期内,需求在不同的时辰发出不同的控制信号,所以采用一个定时电路根据时钟信号依次产生定时信号如T1,T2, ,Tn。控制器就在T1,T2, ,Tn的作用下,顺序产生各种控制信号。在指令周期的末尾,控制器要复位定时电路,以便在下一个指令周期开场时,定时电路

温馨提示

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

评论

0/150

提交评论