您好,欢迎访问三七文档
当前位置:首页 > 金融/证券 > 金融资料 > 数据表示方法-欢迎光临长春金融高等专科学校
第二章数据表示方法2-1数据表示方法和运算器2-2逻辑部件2-3控制部件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-(-
本文标题:数据表示方法-欢迎光临长春金融高等专科学校
链接地址:https://www.777doc.com/doc-243188 .html