版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据表示方法-欢迎光临长春金融高等专科学校2024/3/25数据表示方法欢迎光临长春金融高等专科学校2.1数据表示方法和运算器
2.1.1计算机中数据的表示方法
当前的计算机所采用的存储器件都是两态器件,所以适合于存放二进制数据。尽管为了方便起见,也使用其他进制,如十进制、十六进制,但是在计算机内部数据还是以二进制的形式存放和处理。二进制只使用了两个不同的数字符号,易于用物理器件来实现:在物理世界中具有两个稳定状态的物理器件很多,如晶体管的“截止”与“导通”、电容的“充电”与“放电”、电压信号的“高”与“低”、脉冲的“有”与“无”,电磁单元的“正向磁化”与“反向磁化”等等,只要规定其中一种稳定状态表示“1”,另一种稳定状态表示“0”,就可以用来表示二进制数位了。其次,二进制的运算规则非常简单,易于用电子器件来实现。数据的类型多种多样,如文件、图、表、树、阵列、链表、栈、向量、串、实数、整数、布尔数、字符等。计算机里用到的数据类型主要可分为两类:表示数量的数值数据和非数值性的符号数据。所有的数据都是以二进制的形式在计算机里处理和存储。本节主要讲述数值数据在计算机里的表示方法。
数据表示方法欢迎光临长春金融高等专科学校
1.数值数据表示方法在计算机中表示数时,需要考虑以下几个因素:要表示的数的类型(小数、整数、实数和复数)、符号如何表示以及小数点的位置;可能遇到的数值范围;数值精确度;数据存储和处理所需要的硬件代价。计算机中表示数值符号的方法是占用一位二进制位,1表示负号、0表示正号。常用的数值数据表示格式有两种,根据小数点的位置是固定不变还是浮动变化的分为定点格式和浮点格式。一般来说,定点格式容许的数值范围有限,但要求的处理硬件比较简单。而浮点格式容许的数值范围很大,但要求的处理硬件比较复杂。(1)定点数的表示方法所谓定点格式,即约定机器中所有数据的小数点位置是固定不变的。由于约定在固定的位置,小数点就不再使用记号“.”来表示。原理上讲,小数点位置固定在哪一位都可以,但是通常将数据表示成纯小数或纯整数。
数据表示方法欢迎光临长春金融高等专科学校例如用一个n+1位字来表示一个定点数x,其中一位x0用来表示数的符号,其余位数代表它的量值。为了将整个n+1位统一处理起见,符号位x0放在最左位置,并用数值0和1分别代表正号和负号,这样,对于任意定点数x=x0x1x2…xn,在定点机中可表示为如下形式:
x0x1x2……xn-1xn符号←数量值→数据表示方法欢迎光临长春金融高等专科学校
如果数x表示的是纯小数,那么小数点位于x0和x1之间。当x0x1x2…xn各位均为0时,数x的绝对值最小,当各位均为1时,x的绝对值最大,故数的表示范围为0≤▕x▏≤1—2-n
如果数x表示的是纯整数,那么小数点位于最低位xn的右边,此时数x的表示范围为0≤▕x▏≤2n-1,目前计算机中多采用定点纯整数表示,因此将定点数表示的运算简称为整数运算。
(2)浮点数的表示方法采用浮点表示法表示的数据叫做浮点数,采用浮点数进行运算的机器叫做“浮点机”。浮点数是指小数点位置可以改变的数,显然浮点数可用来表示带符号的实数。例如:表示8位字长的二进制浮点数可以写成
±0.10110101×2±111▏←尾数→▕↑阶码
数据表示方法欢迎光临长春金融高等专科学校任意一个十进制数N可以写成N=10Z×X,同样,在计算机中一个任意进制数N可以写成N=Bz×X其中X称为浮点数的尾数,是一个纯小数。z是比例因子的指数,称为浮点的指数,是一个整数。比例因子的基数B是一个常数,一般规定只为2,8或16。在机器中表示一个浮点数时,一是要给出尾数,用定点小数形式表示。尾数部分给出有效数字的位数,因而决定了浮点数的表示精度。二是要给出指数,用整数形式表示,常称为阶码,阶码指明小数点在数据中的位置,因而决定了浮点数的表示范围。浮点数也要有符号位。因此一个机器浮点数应当由阶码和尾数及其符号位组成:
数据表示方法欢迎光临长春金融高等专科学校
32位浮点数的标准格式为:
Z0Z1Z2……Zn-1ZnX0X1X2……
Xn-1Xn阶符←阶码→数符←尾数→
31302322032位浮点数F←Z→←X
→64位浮点数的标准格式为:
63625251064位浮点数F←Z→←X
→数据表示方法欢迎光临长春金融高等专科学校不论是32位浮点数还是64位浮点数,规定基数B=2。由于基数2是固定常数,不必用显示方式来表示它。32位的浮点数中,F是浮点数的符号位,占1位,安排在最高位,F=0表示正数,F=1表示负数。X是尾数,放在低位部分,占用23位,用小数表示,小数点放在尾数域的最前面。Z是阶码,占用8位,阶符采用隐含方式,即采用移码方法来表示正负指数。移码方法对两个指数大小的比较和对阶操作都比较方便,因为阶码域值大者其指数值也大。采用这种方式时,将浮点数的指数值z变成阶码Z时,应将指数z加上一个固定的偏移值127(01111111),即Z=z+127。一个规格化的32位浮点数X的值可表示为X=(-1)F×(1.X)×2E-127
其中尾数域所表示的值是1.X。因为规格化的浮点数的尾数域最左位也即最高有效位总是1,故这一位经常不予存储,而认为隐藏在小数点的左边。
数据表示方法欢迎光临长春金融高等专科学校
64位的浮点数中符号位1位,阶码域11位,尾数域52位,指数偏移值是1023。因此规格化的64位浮点数X的真值为X=(-1)F×(1.X)×2E—1O23z=E-1023若不对浮点数的表示作出明确规定,同一个浮点数的表示就不是惟一的。例如0.5也可以表示成0.05×101,50×10—2等等。为了提高数据的表示精度,当尾数的值不为0时,其绝对值应≥0.5,即尾数域的最高有效位应为1,否则要以修改阶码同时左右移小数点的办法,使其变成这一要求的表示形式,这称为浮点数的规格化表示。当一个浮点数的尾数为0,不论其阶码为何值,或者当阶码的值遇到比它能表示的最小值还小时,不管其尾数为何值,计算机都把该浮点数看成零值,称为机器零。浮点数所表示的范围远比定点数大的多。假设(考虑符号位)机器中的数由8位二进制数表示时:在定点机中这8位全部用来表示有效数字(包括符号);在浮点机中若阶符阶码占3位,数符尾数占5位。在此情况下,若只考虑正数值,定点机小数表示的数的范围是0.0000000到0.1111111,相当于十进制数的0到127,而浮点机所能表示的数的范围是2-11×0.0001到211×0.1111,相当于十进制数的1/128~7.5。显然,都用8位,浮点机能表示的数的范围比定点机大得多。
数据表示方法欢迎光临长春金融高等专科学校一台计算机中究竟采用定点表示还是浮点表示,要根据计算机的使用条件来确定。一般在高档微机以上的计算机中同时采用定点、浮点表示,由使用者进行选择。而单片机中多采用定点表示。【例2.1】若浮点数X0的二进制存储格式为(43240000)16,求其32位浮点数的十进制值。解:将16进制数展开后,可得二制数格式为01000011001001000000000000000000↑↑↑↑↑F阶码(8位)尾数(23位)指数z=阶码—127=10000110—01111111=00000111=(7)10。包括隐藏位1的尾数1.X=1.01001000000000000000000=1.010010于是有X0=(—1)F×1.X×2z=+(1.010010)×27=+10100100=(187)10。
数据表示方法欢迎光临长春金融高等专科学校【例2.2】将十进制数16.59375转换成32位浮点数的二进制格式来存储。解:首先分别将整数和分数部分转换成二进制数:16.59375=10000.10011移动小数点,使其在第1位和第2位之间10000.10011=1.000010011×24z=4所以:F=0,E=4+127=131,X=000010011则得到的32位浮点数的二进制存储格式为:01000001100001001100000000000000=(4184C000)16
数据表示方法欢迎光临长春金融高等专科学校
(3)定点数据的编码方法①
真值与机器码机器码是数在计算机中的表示形式。对于数值数据而言,无论以定点形式表示或是以浮点形式表示,都需要通过某种编码方法,以计算机所能处理的0和1二进制位来表示其数值大小。通常一个数值数据的机内表示形式称为其机器码,而一个机器码所代表的数值称为该机器码的真值。计算机中只有机器码,不存在数的真值。假设机器码的宽度为n,最高位为符号位,下面分别介绍实际应用中常见的4种机器码编码方法:原码、反码、补码和移码。②原码表示法定点整数原码表示法定点整数原码的定义如下所示:
数据表示方法欢迎光临长春金融高等专科学校
[X]
原=X0≤X<2n-1[X]
原=2n-1-X-2n-1<X≤0
由定义可以看出,正整数的原码就是其自身,负整数的原码只需把其绝对值的原码的符号位置为1即可。(用0表示正号,用1表示负号)。原码表示方法的定点整数的取值范围为-(2n-1-)≤X≤2n-1-1。注意在原码表示法中,零有正零和负零之分。[+0]=0000…0,[-0]=1000…0。定点小数的原码表示法定点小数原码的定义如下所示:[X]
原=X0≤X<1[X]
原=1-X-1<X≤0数据表示方法欢迎光临长春金融高等专科学校正的纯小数的原码就是其自身,而负的纯小数的原码可以通过把其绝对值的原码的符号位置1来得到。其取值范围为-(1-2-(n-1))≤X≤(1-2-(n-1))。综上可以看出一个数的原码是由符号位加上数值位绝对值组成,符号位为0代表正数,符号位为1代表负数。由于0有+0和-0两种表示方法,n位二进制数可以表示2n-1个原码。用原码实现乘除运算规则较简单,但做加减运算不方便。原码表示法的一个主要优点在于其真值和机器码表示之间对应关系很直观,容易转换。③补码表示法定点整数的补码表示定点整数补码的定义如下所示:[X]补=X0≤X<2n-1[X]补=2n+X-2n-1≤X<0数据表示方法欢迎光临长春金融高等专科学校正整数的补码就是其自身,负整数的补码可以通过对其绝对值部分逐位求反,并在最低位加1求得。同样,在补码表示法中,符号位为0表示正号,为1表示负号。其表示的真值X的范围为
-2n-1≤X≤2n-1-1。在补码表示中,0的机器码是惟一的,没有+0和-0之分。定点小数的补码表示定点小数补码的定义如下所示:[X]
补=X0≤X<1[X]
补=2+X-1≤X<0定点小数的补码求解方法与定点整数的补码求解方法相类似。其表示的真值X的范围为-1≤X≤1-2-(n-1)。当n=8时,-1的定点小数补码表示为:10000000,而用定点整数的补码表示-1,则为11111111。在补码表示方法中,0的编码是惟一的,所以n位二进制数可以表示2n个补码。数据表示方法欢迎光临长春金融高等专科学校
③反码表示法定点整数的反码表示定点整数反码的定义如下所示:[X]反=X0≤X<2n-1
[X]反=(2n-1)+X-2n-1<X≤0同样,正整数的反码就是其自身,而负整数的反码可以通过对其绝对值逐位求反来求得。在反码表示法中,符号位仍然用0表示正号,1表示负号。其表示的真值范围与原码相同:-(2n-1-1)≤X≤2n-1-1。数值0用反码表示亦有+0和-0之分。当n=8时,[+0]反=00000000,[-0]反=11111111。定点小数的反码表示定点小数反码的定义如下所示:[X]反=X0≤X<1[X]反=(2-2-n+1)+X-1<X≤0数据表示方法欢迎光临长春金融高等专科学校定点小数的反码求解方法类似定点整数的反码求解方法。其表示的真值的取值范围为:-(1-2-(n-1))≤X≤(1-2-(n-1))。反码表示法中,由于0占有了两个不同的编码,所以,n位二进制数可以表示2n-1个反码。④移码表示法定点整数的移码表示
[X]
移=2n-1+X-2n-1≤X<2n-1
定点小数的移码表示[X]
移=1+X-1≤X<1移码的符号位与其他三种编码不同,用1表示正号而0表示负号。移码的求法其实也很简单,把其补码的符号位直接变反即可。所以在移码表示法中,0也有惟一的表示方法:10000000(n=8)【例2.3】
设机器码长度为8,求X=(-6)10的原码、补码、反码和移码。
数据表示方法欢迎光临长春金融高等专科学校解:[X]原码=27-(-110)=10000000+110=10000110[X]补码=28+(-110)=10000000-110=11111010[X]反码=(28-1)+(-110)=11111111-110=11111001[X]移码=27+(-110)=10000000+110=01111010【例2.4】设机器码长度为8,求X=(-0.3125)10=(-0.0101)2的原码、补码、反码和移码。解:[X]原码=1-X=1.0-(-0.0101)=1.0101=10101000[X]补码=2+X=10.0+(-0.0101)=1.1011=11011000[X]反码=(2-2-7)+X=(10.0-0.0000001)+(-0.0101)=11010111[X]移码=1+X=1.0+(-0.0101)=0.1011=01011000数据表示方法欢迎光临长春金融高等专科学校实际上求某个数的原码、补码、反码和移码时不仅可以利用其定义式采求解,也可以通过这4个编码间的相互关系来求得。比如移码就可以通过把补码的符号位变反来求,而对于正数来讲其原码、补码和反码是完全相同的;一个负数的补码也可以很容易地从其原码推知:除符号位外,各位取反,末位再加1即可。(4)浮点数据的编码方法计算机内部浮点数据表示成如下形式:FXZX数据表示方法欢迎光临长春金融高等专科学校
FX是尾数的符号位,0表示正号而l表示负号;Z是阶码,通常用移码表示;X是定点小数形式的尾数,一般用补码或原码表示。【例2.5】某浮点数机器码10位,基数为2,阶码用4位移码表示,尾数5位用补码表示,符号位1位。求210×0.110l的编码。解:符号位FX=0阶码Z=(10)移码=1010尾数X=(0.1101)补码=11010则其编码为0101011010【例2.6
】
某浮点数机器码为17位,基数为2,阶码用4位移码表示,尾数用12位补码表示,符号位1位。求-2.75的浮点编码形式。解:首先把-2.75表示成浮点形式:
(-2.75)10=(-0.6875×22)10=(-0.1011)2×2(10)
FX=1
数据表示方法欢迎光临长春金融高等专科学校Z=(10)移码=1010X=(-0.1011)补码=010100000000编码为11010010100000000同一个浮点数可以有许多种不同的编码表示(改变其阶码),所以需要对浮点数进行规格化处理,以统一其形式,同时提高数据的表示精度。规格化处理(基数为2)①尾数部分以纯小数形式表示,其绝对值应满足0.5≤▕X▏<1。若不满足该条件,则需要修改阶码并对尾数进行移位,以使尾数满足该条件;②当尾数为正时,无论其使用原码还是补码表示,X应满足条件:0.5≤X<1。以二进制形式表示为X=0.1xx…x(x为0或1);③用原码表示的负尾数,X满足-1<X≤-0.5,以二进制形式表示为M=1.1xx…x(x为0或1);④以补码表示的负尾数,X满足-1≤M<-0.5,以二进制形式表示为X=1.0xx…x(x为0或1);从上面的讨论可以看出,如果规格化的尾数用原码表示,则其最高位一定为1如果改用补码表示,则尾数的最高位与其符号位相反,即为0。
数据表示方法欢迎光临长春金融高等专科学校
2.符号数据的表示方法现代计算机不仅处理数值领域的问题,而且处理大量非数值领域的问题。这样一来,必然要引入文字、字母以及某些专用符号,以便表示文字语言、逻辑语言等信息。例如人机交换信息时使用英文字母、标点符号、十进制数以及诸如$,%,+等符号。然而数字计算机只能处理二进制数据,因此,上述信息应用到计算机中时,都必须编写成二进制格式的代码,也就是字符信息用数据表示,称为符号数据。最常见的编码格式为ASCⅡ码和EBCDIC码。(1)ASCⅡ码目前国际上普遍采用的一种字符系统是七单位的ASCII码(美国国家信息交换标准字符码),它包括10个十进制数码,26个英文字母和一定数量的专用符号,如$,%,+,=等,总共128个元素,因此二进制编码需要7位,加上一个偶校验位,共8位,刚好为一个字节。表2-1列出了七单位的ASCII码字符编码表。ASCII码规定8个二进制位的最高一位为0,余下的7位可以给出128个编码,表示128个不同的字符。其中95个编码,对应着计算机终端能输人并且可以显示的95个字符,打印机设备也能打印这95个字符,如大小写各26个英文字母,0~9这10个数字符,通用的运算符和标点符号+,-,*,\,>,=,<等等。另外的33个字符,其编码值为0~31和127,则不对应任何一个可以显示或打印的实际字符,它们被用作控制码,控制计算机某些外围设备的工作特性和某些计算机软件的运行情况。数据表示方法欢迎光临长春金融高等专科学校计算机里的存储和传送单位通常使用Byte(1Byte=8bit),所以7位的ASCII码也用一个字节来表示。ASCII编码和128个字符的对应关系如表2.1所示。表中编码符号的排列次序为b7b6b5b4b3b2b1b0,最高1位没有使用,通常填0;也可以把它用作校验位或者用来扩展字符集。表中未给出,列b6b5b4为高位部分,行b3b2b1b0为低位部分。ASCII的字符编码表一共有24=16行,23=8列。低4位编码b3b2b1b0用作行编码,而b6b5b4高3位用作列编码。值得注意的一点是数字“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码可以去掉b6b5b4(=011)而得到。这个特点使得在数字符号(ASCII码)与数字值(二进制码)之间进行转换非常方便。
数据表示方法欢迎光临长春金融高等专科学校表2-1ASCⅡ字符编码表
0000010100111001011101110000NULDELSP0@P`p0001SOHDC1!1AQaq0010STXDC2〃2BRbr0011ETXDC3#3CScs0100EOTDC4$4DTdt0101ENQNAK%5EUeu0110ACKSYN&6FVfv0111DELETB‘7GWgw1000BSCAN(8HXhx1001HTEM)9IYiy1010LFSUB*:JZjz1011VTESC+;K[k{1100FFFS,<L\l┃1101CRGS-=M]m}1110SORS.>N∧n~1111SIUS/?O—oDEL数据表示方法欢迎光临长春金融高等专科学校字符串是指连续的一串字符,通常方式下,它们占用主存中连续的多个字节,每个字节存一个字符。当主存字由2个或4个字节组成时,在同一个主存字中,既可按从低位字节向高位字节的顺序存放字符串内容,也可按从高位字节向低位字节的次序顺序存放字符串内容。这两种存放方式都是常用方式,不同的计算机可以选用其中任何一种。例如下述字符串:
图2-1字符串在主存中的存放
数据表示方法欢迎光临长春金融高等专科学校IF┗┛A>B┗┛ELSE┗┛READ(C)┗┛
就可以按图2-1所示从高位字节到低位字节依次存放在主存中。其中主存单元长度由4个字节组成。每个字节中存放相应字符的ASCII值,文字表达式中的空格“┗┛”在主存中也占一个字节的位置。因而每个字节分别存放十进制的73,70,32,65,62,66,32,69,76,83,69,32,82,69,65,68,40,67,41,32。(2)EBCDIC码EBCDIC(ExtendedBinaryCodedDecimalInterchangeCode)即所谓扩展的二/十进制交换码。采用8bit编码来表示一个字符,共可以表示28=256个不同符号,但EBCDIC中并没有使用全部编码,只选用了其中一部分,剩下的保留作扩充用。EBCDIC码常用于IBM大型机中。在EBCDIC码制中,数字“0”~“9”的高4位编码都是1111,而低4位编码则依次为0000到1001。把高四位屏蔽掉,也很容易实现从EBCDIC码到二进制数字值的转换。
数据表示方法欢迎光临长春金融高等专科学校3.汉字的表示方法
(1)
汉字的输入编码
为了能直接使用西文标准键盘把汉字输入到计算机,就必须为汉字设计相应的输入编码方法。当前采用的方法主要有以下三类:
数字编码
常用的是国标区位码,用数字串代表一个汉字输入。区位码是将国家
标准局公布的6763个两级汉字分为94个区,每个区分94位,实际上把汉字表示成二维数组,每个汉字在数组中的下标就是区位码。区码和位码各两位十进制数字,因此输入一个汉字需按键四次。例如“中”字位于第54区48位,区位码为5448。
数字编码输入的优点是无重码,且输入码与内部编码的转换比较方便,缺点是代码难以记忆。
拼音码拼音码是以汉语拼音为基础的输入方法。凡掌握汉语拼音的人,不需训练和记忆,即可使用。但汉字同音字太多,输入重码率很高,因此按拼音输入后还必须进行同音字选择,影响了输入速度。
数据表示方法欢迎光临长春金融高等专科学校
字形编码
字形编码是用汉字的形状来进行的编码。汉字总数虽多,但是由一笔
一划组成,全部汉字的部件和笔划是有限的。因此,把汉字的笔划部件用字母或数字进行编码,按笔划的顺序依次输入,就能表示一个汉字。例如五笔字型编码是最有影响的一种字形编码方法。
除了上述三种编码方法之外,为了加快输入速度,在上述方法基础上,发展了词组输入、联想输入等多种快速输入方法。但是都利用了键盘进行“手动”输入。理想的输入方式是利用语音或图像识别技术“自动”将拼音或文本输入到计算机内,使计算机能认识汉字,听懂汉语,并将其自动转换为机内代码表示。目前这种理想已经成为现实。(2)
汉字的存储(汉字内码)汉字内码是用于汉字信息的存储、交换、检索等操作的机内代码,一般采用两个字节表示。英文字符的机内代码是七位的ASCII码,当用一个字节表示时,最高位为“0”。为了与英文字符能相互区别,汉字机内代码中两个字节的最高位均规定为“1”。例如汉字操作系统CCDOS中使用的汉字内码是一种最高位为“l”的两字节内码。有些系统中字节的最高位用于奇偶校验位,这种情况下用三个字节表示汉字内码。
数据表示方法欢迎光临长春金融高等专科学校
(3)
汉字的输出(汉字字模码)字模码是用点阵表示的汉字字形代码,它是汉字的输出形式。根据汉字输出的要求不同,点阵的多少也不同。简易型汉字为16×16点阵,提高型汉字为24×24点阵、32×32点阵,甚至更高。因此字模点阵的信息量是很大的,所占存储空间也很大。以16×16点阵为例,每个汉字要占用32个字节,国标两级汉字要占用256K字节。因此字模点阵只能用来构成汉字库,而不能用于机内存储。字库中存储了每个汉字的点阵代码。当显示输出或打印输出时才检索字库,输出字模点阵,得到字形。图2-2示出了“大”字的点阵及编码。注意,汉字的输入编码、汉字内码、字模码是计算机中用于输入、内部处理、输出三种不同用途的编码,不要混为一谈。数据表示方法欢迎光临长春金融高等专科学校图2-2汉字的字模点阵及编码
数据表示方法欢迎光临长春金融高等专科学校4.校验码元件故障、噪声干扰等各种因素常常导致计算机在处理信息过程中出现错误。例如将1位x从部件A传送到部件B,可能由于传送信道中的噪声干扰而受到破坏,以至于在接收部件B收到的是而不是x。为了防止这种错误,可将信号采用专门的逻辑线路进行编码以检测错误,甚至校正错误。通常的方法是,在每个字上添加一些校验位,用来确定字中出现错误的位置。计算机中常用这种检错或纠错技术进行存储器读写正确性或传输信息的检验。这里仅介绍检错码中的奇偶校验码。最简单且应用广泛的检错码是采用一位校验位的奇校验或偶校验。设X=(x0
x1
…xn-1)是一个n位字,则奇校验位
定义为C=x0x1…xn-1
式中⊕代表按位加,表明只有当X中包含有奇数个1时,才能使
=1,即C=0。
同理,偶校验位C定义为C=x0x1…xn-1
即X中包含偶数个1时,才使C=0。
假设一个字X从部件A传送到部件B。在源点A,校验位C可用上面公式算出来,并合在一起将(x0x1
…xn-1C)送到B。假设在B点真正接收到的是X=(x’0x’1
…x’n-1C’),然后计算F=(x’0
x’1
…
x’n-1
C’)若F=1,意味着收到的信息有错,例如(x0
x1
…xn-1
)中正巧有一位变“反”时就会出现这种情况。若F=0,表明X字传送正确。奇偶校验可提供单个错误检测,但无法检测多个错误,更无法识别错误信息的位置。
数据表示方法欢迎光临长春金融高等专科学校【例2.7】
已知下表中左面一栏有5个字节的数据。请分别是用奇校验和偶校验进行编码,填在中间一栏和右面一栏。解:假定最低一位为校验位,其余高8位为数据位,列表如下。从中看出,校验位的值取。还是取1,是由数据位中1的个数决定的。数据偶校验编码奇校验编码1010101010101010010101010101010100010101001010101000000000000000000000000000010111111101111111101111111011111111111111110111111111数据表示方法欢迎光临长春金融高等专科学校2.1.2计算机中算术运算和逻辑运算1.二进制数的算术运算(1)定点数运算①定点数加法/减法运算定点数的加法和减法运算使用补码较为方便。对于定点小数的运算规则如下:加法:[X+Y]补={[X]补+[y]补}mod2减法:[X-Y]补={[X]补+[-y]补}mod2当运算结果超过了定点数的表示范围时,则产生溢出(Overflow),常用的溢出检测机制主要有以下两种:进位判决法:令Cn—1表示次高位(最高数值位)向最高位(符号位)的进位,Cn则表示符号位的进位,则结果是否溢出的判决表如表2-2所示,即CnCn—1=1时溢出。这里,表示异或。
数据表示方法欢迎光临长春金融高等专科学校表2-2溢出的判决表
CnCn-1Overflow=CnCn-100无溢出01溢出10溢出11无溢出数据表示方法欢迎光临长春金融高等专科学校【例2.8】X=(100)10=(01100100)2,Y=(50)10=(00110010)2,求X+Y。解:[X]补=01100100,[y]补=00110010[X+Y]补=[X]补+[y]补=10010110CnCn—1=1,表示结果溢出。【例2.9】X=(-100)l0—(-01100100)2,Y=(-50)l0=(-00110010)2,求X-Y。解:[X]补=10011100,[-y]补=00110010[X-Y]补=[X]补+[-Y]补=11001110CnCn-1=0,因此没有溢出。双符号位判决法:采用两位二进制位来表示符号位:00~正号,11~负号,根据运算结果的符号位也可以判定其是否溢出,其判决表如表2.3所示。
数据表示方法欢迎光临长春金融高等专科学校表2-3双符号位判决表
运算结果的符号位Overflow运算结果的符号位Overflow00无溢出10溢出01溢出11无溢出数据表示方法欢迎光临长春金融高等专科学校【例2.10】X=(100)l0=(01100100)2,Y=(50)l0=(00110010)2,求X+Y。解:[X]补=001100100[Y]补=000110010[X+Y]补=[X]补+[y]补=010010110其符号位为01,说明结果溢出。②定点数乘法运算在作定点数的乘法运算时采用原码比较方便。通常使用原码一位乘法来求两个定点数的乘积。运算规则:乘积的符号位等于乘数和被乘数的符号位进行异或;乘积的值等于两数绝对值之积,即乘数和被乘数的绝对值进行移位相加。算法:(用绝对值进行运算)令X表示被乘数,Y表示乘数,P表示部分积以存放中间结果,flag用作判别位,count用作计数。
数据表示方法欢迎光临长春金融高等专科学校令P=0;count=0;flag=0;P和Y一起右移一位(P为高位部分,Y为低位部分),右移时P的最高位补0,P的最低位移入Y的最高位,Y的最低位移入到flag中;如果flag=1同P=P+X,否则P不变;count=count+1,如果count超过Y的位数则运算停止,否则转到上述第2步继续执行;P和Y的内容就是所求乘积的绝对值,其中P存放积的高位,而Y存放积的低位。【例2.11】X=(10)l0=(1010)2,Y=(-6)10=(-0110)2,求X,Y。解:[▕X▏]原=1010,[▕Y▏]原=0110乘积的符号位S=01=1。
数据表示方法欢迎光临长春金融高等专科学校表2-4定点数乘法运算表
执行动作部分积P乘数Y判别位Flagcounter初始化0000011000右移0000001101右移0000000112P+X1010
右移0101000013P+X1111
右移0111100004右移0011110005数据表示方法欢迎光临长春金融高等专科学校则所得乘积为(-00111100)2=(-60)l0
③定点数除法运算定点数的除法通常也常用原码进行。下面介绍常用的加减交替法求两个数X和Y的商。运算规则:商的符号位同定点数原码乘法的处理方法,由两数的符号位进行异或;两数的绝对值部分进行相除;算法:(求X/Y,设X、Y的数值部分长度为N)令及R=X,counter=0;R=R-Y;若R为正则商1,否则商0;R左移一位,counter=counter+1;若上一次商为1则R=R—Y,否则R=R+Y;R为正则商1,否则商0;若R=0或者counter≥N则结束,否则转到上述第3步执行。
数据表示方法欢迎光临长春金融高等专科学校
(2)浮点数运算在进行浮点运算之前,应先对浮点数进行规格化。①浮点数的加减运算设有浮点数X=M·2i,Y=N·2j,求X+Y或X-Y,其运算过程如下:对阶:使两个数的阶码相同。令K=▕i-j▏,把阶码小的数的尾数右移K位,其阶码加上K。当右移尾数时,若尾数用补码表示则符号位参加移位,符号位不变,如果是原码,则符号位不参加移位,尾数的最高位补0。尾数进行加、减运算:规格化处理:若尾数所得结果不是规格化的数,则需对其进行规格化处理。当尾数溢出时,尾数向右规格化位,阶码加1;当尾数用补码表示,尾数的最高位与符号位相同时,应向左规格化,尾数每向左移一位,阶码减1,直到尾数最高位与符号位相反。
数据表示方法欢迎光临长春金融高等专科学校舍入操作:舍入的方法常用0舍1入,即当向右规格化时,若移掉的最高位为1,则在尾数末位加1,否则舍去。另一种则是“恒1”法,即不管移走的数据为何值,尾数最末位恒置1。溢出判断:以阶码为准。若阶码上溢,则结果溢出;若阶码下溢,则结果为0;否则结果正确无溢出。②浮点数的乘除运算浮点数相乘,其积的阶码为两数阶码相加,积的尾数为两尾数相乘。浮点数相除,其商的阶码为两数阶码之差,商的尾数为两尾数相除。其结果都需要进行规格化处理,同时还需要判断其阶码是否溢出。
2.逻辑代数及逻辑运算逻辑代数是1849年英国数学家乔治·布尔提出的以代数的方式对逻辑变量进行描述和分析的数学工具,又称布尔代数。逻辑变量的取值只有“真”和“假”,通常以1和0表示。
数据表示方法欢迎光临长春金融高等专科学校(1)基本的逻辑运算①“与”(AND)运算又称为逻辑乘运算,其运算符号通常用AND、∩、∧或·等表示。两个变量的“与”运算的运算规则如表2-4所示。即当A、B中任一变量取0值时,其运算结果为0。
表2.5“与”运算表表2.6“或”运算表
ABZ=A·B000010100111ABZ=A+B000011101111数据表示方法欢迎光临长春金融高等专科学校②“或”(OR)运算又称为逻辑加运算,其运算符号为OR、U、V或+等。两个变量的“或”运算规则如表2-5所示。即当A、B中任意一个取1值时,其运算结果为l。③“非”(NOT)运算又称为逻辑求反运算。常用表示对变量A进行求反。其运算规则很简单:=0,=1。④“异或”运算常用的还有“异或”运算,又称为半加运算,其运算符号为XOR或。异或运算是一种复合逻辑运算,可用上述基本逻辑运算表示如下:A⊕B=A·B+A·B
数据表示方法欢迎光临长春金融高等专科学校2.2逻辑部件
2.2.1寄存器
1.寄存器组(registerblock)概述CPU中的寄存器通常可以分为两类:用户可见的寄存器(user-visibleregisters)和状态控制寄存器(controlandstatusregisters)。
(1)用户可见的寄存器用户能够通过机器语言来访问这些寄存器。合理优化地使用这些寄存器可以减少对主存的访问次数,从而提高程序的执行速度。按其功能可以分为4类:①通用寄存器(generalpurposeregister)通用寄存器的用途由程序员编程决定,例如可以用来存放操作数,也可以用作寻址寄存器。②数据寄存器(dataregister)数据寄存器仅能用来存放数据而不能用来对操作数的地址进行计算。
数据表示方法欢迎光临长春金融高等专科学校③地址寄存器(addressregister)地址寄存器用来存放操作数的地址,一般而言地址寄存器又可以分为段地址寄存器(segmentpointerregister)、间址寄存器(indexregister)和堆栈寄存器(stackpointerregister)。段地址寄存器用在采用段式内存管理的计算机中,存放着某一段内存区域的基地址。间址寄存器用在间接寻址(indexedaddressing)方式下。堆栈寄存器用以存放堆栈栈顶的地址,使得在使用堆栈操作(如push,pop)时无须显式地给出操作数的地址(即其地址是隐含的)。④标志寄存器(flag/conditioncodesregister)标志寄存器中的位是由CPU硬件根据运算的结果而设立的一些指示位,以反映该次运算的某些特征:结果为正、负、零、溢出等等,并可以用作分支跳转的依据。一般而言,标志寄存器允许编程者进行读操作,但不允许对其直接进行写操作。
数据表示方法欢迎光临长春金融高等专科学校(2)状态控制寄存器(CSR)这些寄存器被控制器(controlunit)用来控制CPU的操作。通常是程序员不可见的,但也有某些寄存器在某种特定的状态下可以由某些特权指令进行访问。常见的CSR有:程序计数器(programcounter,PC)、指令寄存器(instructionregister,IR)、存储器地址寄存器(memoryaddress,register,MAR)、存储器缓冲寄存器(memorybufferregister,MBR)以及程序状态字(programstatusword,PSW)。PC中存放着下一条待取指令的地址。当程序顺序执行时,CPU在取回一条指令后,会自动修改PC中的值以使其指向下一条指令。而程序中的分支或跳转指令也是通过修改PC中的值来达到改变流程的目的。IR中存放着CPU刚取回的指令,以供指令译码使用。CPU和存储器之间的数据交换通过MAR和MBR来实现。MAR中存放着待访问的内存单元的地址而MBR则存放从内存中读人的数据或要写回内存单元的数据。这4个寄存器(PC、IR、MAR、MBR)用来实现在CPU和存储器(memory)之间的数据交换。另外CPU内部,在ALU与MBR、用户可见的寄存器之间也可能存在用作输入/输出缓冲寄存器。
数据表示方法欢迎光临长春金融高等专科学校2.寄存器逻辑组成寄存器是计算机的一个重要部件,用于暂存数据、指令等。它由触发器和一些控制门组成。在寄存器中,常用的是正边沿触发D触发器和锁存器。图2-3所示是由正沿触发的D触发器组成的四位寄存器。在CP正沿作用下,外部数据才能进入寄存器。D是复位端,CP是D触发器的脉冲端,CK是增加了个与逻辑门电路来取正沿脉冲的输入端。四D寄存器的功能见表2-7,其中↑代表正脉冲,也即正沿。
数据表示方法欢迎光临长春金融高等专科学校图2-3四D寄存器
数据表示方法欢迎光临长春金融高等专科学校表2-7四D寄存器功能表
控制和输入输出RDCK1D2D3D4D1Q2Q3Q4Q1↑1D2D3D4D1D2D3D4D0×××××0000数据表示方法欢迎光临长春金融高等专科学校事实上,在计算机中常要求寄存器有移位功能。如在进行乘法时,要求将部分积右移;在将并行传送的数转换成串行数时也需移位。有移位功能的寄存器称为移位寄存器。2.2.2计数器计数器是计算机、数字仪表中常用的一种电路。计数器按时钟作用方式来分,有同步计数器和异步计数器两大类。在异步计数器中,由于高位触发器的时钟信号是由低一位触发器的输出来提供的,但是结构简单。同步计数器中各触发器的时钟信号是由同一脉冲来提供的,因此,各触发器是同时翻转的,它的工作频率比异步计数器高,但结构较复杂。计数器按计数顺序来分,有二进制、十进制两大类。在计算机中较少使用异步计数器,这里着重介绍有并行输入数据功能的正向同步十进制计数器。图2-4是用主—从J—K触发器构成的同步十进制集成化计数器。同步计数器是采用快速进位方式来计数的,触发器及实现快速进位的逻辑电路是它的核心。
数据表示方法欢迎光临长春金融高等专科学校图2-4十进制同步计数器
数据表示方法欢迎光临长春金融高等专科学校“预置数”是集成化同步计数器的一个重要功能。一般设置控制端L,用来选择电路是执行计数还是执行预置数:当L=1,执行同步计数;L=0,执行预置数。由于J—K触发器数据输入是双端的,所以要将单端的预置数A~D经两级“与非”门变成互补信号,再加在J,K端。图2-4所示与非门4~11就是为此目的而设置的。当L=1时,这些与非门被封锁,快速进位电路输出经或门12~15进入触发器,电路执行计数;当L=0,门4~11打开,快速进位被封锁,电路执行置数。
能够方便地扩展位数是集成化计数器的一个特点。下面介绍扩展方法。计数器扩展应满足以下条件。
首先,要有标志计数器已计至最大数的进位输出端RC,对二进制、十进制计数器,RC分别为:
二进制计数器:RC=QAQBQCQD
十进制计数器:RC=QAQD数据表示方法欢迎光临长春金融高等专科学校其次,计数器应有保持功能。图2-4计数器中设置了“计数允许”端P和T,用来控制计数器快速进位电路和RC形成门:当P,T均为“1”,快速进位电路才能打开(见表2-8),此时若L=1,则电路处于计数状态;若P=0,T=1,则快速进位电路封锁,电路不能计数,此时若L=1,预置数也被封锁,又由于T=1时RC形成门不封锁,所以各触发器状态及RC均保持。有了RC,P,T端,就可以方便地对计数器进行扩展。
表2-8同步计数器功能表数据表示方法欢迎光临长春金融高等专科学校PTLRDCK功能1111↑计数××01↑并行输入数据0111×保持×011×触发器保持,RC=0×××1×异步清“0”数据表示方法欢迎光临长春金融高等专科学校2.2.3译码器译码器有n个输入变量,2n个(或少于2n个)输出,每个输出对应于n个输入变量的一个最小项。当输入为某一组合时,对应的仅有一个输出为“1”(或为“0”),其余输出均为“0”(或为“1”)。译码器的用途是把输入代码译成相应的控制电位,以实现代码所要求的操作。图2-5给出了2输入4输出译码器的逻辑图。译码器中常设置“使能”控制端正,当该端为“1”时,译码器功能被禁止,此时所有输出均为“1”。使能端的一个主要功能是用来扩充输人变量数。数据表示方法欢迎光临长春金融高等专科学校数据表示方法欢迎光临长春金融高等专科学校2.3控制部件
控制器(见图2-6)负责控制整个计算机系统的运行,读取指令寄存器、状态控制寄存器以及从外部来的控制信号(例如中断信号),发布外控制信号控制CPU与存储器、I/O设备进行数据交换,发布内控制信号控制寄存器间的数据交换,控制ALU完成指定的运算功能,并且管理其他的CPU内部操作。2.3.1控制器的基本功能控制器的基本功能就是时序(sequencing)控制和执行(execution)控制。根据当前运行的程序,控制器使CPU按一定的时序关系执行一系列的微操作(micro-operation),从而完成程序规定的动作。
数据表示方法欢迎光临长春金融高等专科学校控制器的输入信号有:时钟信号、指令寄存器、标志位、控制总线上的控制信号。控制器的输出信号包括:CPU内的控制信号、发往控制总线的控制信号。
1.时钟信号控制器根据由时钟电路产生的时钟信号进行定时,以控制各种操作按指定的时序进行。计算机的基本功能是执行程序,而程序由一连串的指令组成;计算机的执行过程由一连串的指令周期组成,每一指令周期完成一条机器指令。这些指令周期又可进一步细分为更小的单元,直到微操作(micro-operation)——CPU完成的基本的原子操作。时钟电路由时钟脉冲发生器、分频电路及各种外围电路组成。时钟脉冲发生器的晶振频率称为机器的主频,它产生的时钟脉冲信号是整个机器的时间基准,其周期T称为该计算机的时钟周期。执行一条机器指令所需的时间称为一个指令周期(instruction
cycle),因为CPU机器指令的执行的时间通常互不相同,因而其指令周期也各不相同。为了便于控制和管理,把指令周期进行分解,细化为各种原子操作(微操作,μop),每一μop都与CPU的寄存器相关。完成一个微操作的时间就称为CPU周期(机器周期)。例如一条指令周期通常可分为取指子周期、执行子周期、保存结果子周期,而每一个子周期又由若干原子周期——CPU周期组成。
数据表示方法欢迎光临长春金融高等专科学校2.指令寄存器(IR)控制器需要完成取指令、分析指令和执行指令的操作。控制器根据程序计数器PC中的内容(指令地址)从存储器中取出该指令;然后对指令进行译码以确定所需执行的
μop;最后控制器根据分析的结果发出一系列的控制信号控制各相关部件(运算器、存储器、I/O设备)完成规定的操作;同时产生下一条指令的地址。MAR←(PC)MBR←MemoryIR←(MBR)PC←(PC)+13.中断控制逻辑计算机系统通常都提供了中断机制,允许某一事件的发生(如由I/O设备提出服务请求)可以中止CPU正在执行的程序,转去对该事件进行处理,然后再返回原程序被中止处继续执行。中断机制的主要作用就是提高CPU的处理效率;使CPU与I/O设备并行工作,当进行I/O操作时CPU可以处理其他事务;同时使CPU能够及时地响应各种预先不知的异常事件,并进行处理;还可以实现分时操作等等。
数据表示方法欢迎光临长春金融高等专科学校(1)中断处理过程
如图2-7所示,如果系统允许响应中断请求,那么在每条指令执行完成后,控制器都要检查是否有中断发生,如果没有中断请求信号,控制器则转去取下一条指令,如果有中断事件发生,则暂停执行当前程序并保护其现场状态信息(如下一条指令的地址、相关寄存器的内容等等),然后转去执行中断服务程序。当完成中断服务后,再恢复以前保存的现场信息,从原程序被中止处(断点)继续执行。数据表示方法欢迎光临长春金融高等专科学校图2-7计算机的中断机制
数据表示方法欢迎光临长春金融高等专科学校通常把CPU中断处理过程分为两个阶段:中断响应过程和中断服务过程。①中断响应过程CPU接受中断请求后,就暂停执行当前程序,进人中断响应过程:关闭中断:为了使CPU在中断服务后能够返回原程序断点处继续执行,在中断响应期间,保存断点信息之前,需要关闭中断允许,禁止CPU响应新的中断请求。保存断点信息:当CPU进入中断响应过程,关闭中断允许后,控制器要保护当前正在执行的程序的断点信息;把程序的断点即PC里的内容,以及PSW里的内容等推入系统堆栈。中断返回以后,再从堆栈中恢复现场信息,继续执行主程序。把中断服务程序的入口地址置人PC中:控制器保存完断点信息后,接着就把相应的中断服务程序入口地址置入程序计数器中去,CPU马上要执行的下一条指令就是中断服务程序的第一条指令。②
中断服务过程当PC中置入中断服务程序的入口地址之后,接着保留现场信息,CPU开放中断允许响应新的中断请求,然后就转入中断服务程序,对中断事件进行处理。中断服务完成之后,CPU再次禁止中断,以恢复现场和断点信息,使之返回到原主程序断点处继续执行。
数据表示方法欢迎光临长春金融高等专科学校4.总线控制逻辑计算机各个部件通过总线(BUS)相互连接起来,传递信息协调工作,共同完成操作。CPU内部各器件之间互连的总线称为内部总线,CPU与其他部件之间互连的总线称为外部总线(又称系统总线)。由于总线是共享的传输通道,任意一时刻只能由一个器件负责发送数据,所以需要由总线控制器采协调各部件申请使用总线。当发生多个设备争用总线时,仲裁电路会依据某种策略(如优先级)来决定使用总线的先后顺序。常用的仲裁方式主要有中央仲裁和分布式仲裁两种。2.3.2控制器的实现(硬布线逻辑/微程序控制)控制器的作用就是根据输入的时钟信号、指令信息以及各种状态信号产生相应的控制信号去控制各个部件完成特定的操作。控制器的逻辑设计中包括时序逻辑(控制微操作的时序关系)、译码逻辑(对指令操作码进行译码分析)、执行逻辑(按一定的顺序执行微操作)和决策逻辑(根据ALU等部件的标志位来决定下一步的动作)。控制器的实现方法主要有两种:硬布线逻辑(hardwiredimplementation)和微程序控制(mi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 数据中心设备减震施工方案
- 初中学校工会促进师生关系工作总结
- 工程承包合同协议书(2篇)
- 七年级新生班级建设方案
- 小孩做家务协议书(2篇)
- POS机追偿协议(可直接使用)
- 老年人健康管理合作协议书
- 绿化养护作业安全执行方案
- 南充-PEP-2024年小学四年级上册英语第三单元寒假试卷
- 定向钻在通信设施铺设中的方案
- 外贸开发信PPT课件讲义
- 干部人事档案专项审核认定表填写模板
- STEMI溶栓流程图(第一版)
- 复变函数与积分变换全套精美课件
- 人性化设计产品案例课件
- 中等职业学校人才培养工作状态数据采集与管理平台数据结构
- 特种设备安全管理人员、作业人员管理和培训制度
- 新苏教版2022-2023五年级科学上册第19课《我们的大脑》课件
- 湖北省黄石市各县区乡镇行政村村庄村名居民村民委员会明细
- 装饰、装修安全教育培训试卷+答案
- 《对校园欺凌说“不”》教学设计-《心理健康教育》七年级下册
评论
0/150
提交评论