计算机中的数据及其应用_第1页
计算机中的数据及其应用_第2页
计算机中的数据及其应用_第3页
计算机中的数据及其应用_第4页
计算机中的数据及其应用_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

1、计算机中的数据及其运算HLJ_DJS笔记整理计算机中的数据包括数值性数据和非数值性数据两种。数据在计算机中通常是以二进制的形式表示的。对数值性数据进行编码即数值码,可以在计算机中对其进行各种数的运算。对非数值性数据进行编码,便于计算机进行识别和处理。§1.1 数与数制1.1.1 进位与数制按进位的方法计数的数制称为进位计数制,简称进位制。一个十进制数是由十个不同的数字符号0、1、2、9中的某些数字符号,按照一定的法则排列起来所表示的。这十个数字符号称为数码。一个数码由于在排列中处的位置(数位)不同,就有不同的位置值,因而所表示的数值也不同。例如:数168.58中小数点左边的“8”表示

2、8个1,而小数点右边的“8”表示8 个1100,对于十进制而言,每个数位的位置值都是10的某次幂,因此任何一个十进制数都可以写成10的乘幂之和的形式,如:168.58=1×102+6×101+8×100+5×10-1+8×10-2一般地,任意一个十进制数N都可以表示为: 数码 数位(该位置的序数) 基数 N=Kn-1·10n-1+Kn-2·10n-2+K1·101+K0·100+Kn-1·10-1+K-m·10-m 权或位权(位置值) 数值 =i=-mn-1Ki·10i (1

3、.1.1)其中Ki表示某一位上的数,是0 9这是个数码之一,n、m为正整数,分别代表整数的数位和小数的数位。在一种进位计数中,所有不同的数码的个数,称为这种进位计数制的基数。例如,十进制数有十个不同的数码,所以十进制数的基数是“10”,实际上,基数可以是任何大于1的正整数P。在进位计数制中,把位置值称为“位权”或“权”。每个数位上的权都是基数的某次幂,幂指数是该数位的序数。序数的值规定如下:小数点左边第一位的序数为0,第二位为1,向左依次加1;小数点右边第一位的序数为-1;第二位为-2,向右依次递减1。任何一个P进制数N,若整数位为n位,小数位为m位,则可以表示为:多项式计数法:N=Kn-1&

4、#183;Pn-1+Kn-2·Pn-2+K1·P1+K0·P0+Kn-1·P-1+K-m·P-m =i=-mn-1Ki·Pi (1.1.2) n-1 序数 Pn-1 权(位置值) P 基数其中Ki可以是0、1、2、(P-1)中的任意一个数码,Ki叫做第i位的系数。此式称为数N的按权展开式。从式中可知,在P进位计数制中,数位i上的权为Pi,相邻两个数位的权,左边一位是右边一位的P倍。小数点左移一位数值缩小P倍,小数点右移一位数值扩大P倍。上式所表示的P进制数N可以记作:按位计数法: N=(Kn-1 Kn-2K1K 0.K-1 K-m)P

5、其中:P 基数 Ki 系数 0KiP-1, -min n 整数的位数 m 小数的位数 Kn-1 最高位(Kn-10) K-m 最低位称(Kn-1 Kn-2K1K 0.K-1 K-m)P为一个P进制数,是数N的P进制表示。综上所述,可知P进位计数制有如下的特点:1. 数码的基数等于基数P;2. 最大的数码比基数小1;3. 第I位上的权为P;4. 运算规则是“逢P进一”,“退一当P”。1.1.2 二进位计数制及其特点二进制的基数为2 ,只有两个数码0和1。二进制的计数规则是“逢二进一,退一当二”。任何一个二进制数N都可以写成按权的展开式:N=Kn-1·2n-1+Kn-2·2n-

6、2+K1·21+K0·20+Kn-1·2-1+K-m·2-m =i=-mn-1Ki·2i其中Ki=0或1,m、n为正整数。通常把它用按位表示法记作:N=(Kn-1 Kn-2K1K 0.K-1 K-m)2例如 ,数1101.112就是一个二进制数,他的按权展开式为:1101.112=1×23+1×22+0×21+1×20+1×2-1+1×2-2计算机中的各种数据、指令及其他信息,通常都是采用二进制代码表示的。这是由于二进制有下列优点:一、 容易用物理器件表示二、 运算规则简单计算机在进行

7、算术运算时,要记忆两个数码的和与积的公式表。对于P进制而言,两个一位数的和与积各有P(P+1)2(既CP2 )种结果。对于十进制而言,有10(10+1)2 =55和的结果与55种积的结果,而对于二进制只有3种和与3种积的结果。采用二进制的计算机,只要记忆3种和与3种积的运算规则和结果就可以了。三、 节省器材四、 可以利用逻辑代数这个数学工具二进制中的数码“0”和“1”,恰好与逻辑代数中的逻辑变量的值“假”与“真”相对应。因此,在计算机中,可以方便地使用二进制数进行逻辑运算。表1.1.1二进制与十进制数码对照表整数小数十进制数二进制数十进制数二进制数002-1=12=0.50.120=112-2

8、=14=0.250.0121=2102-3=18=0.1250.00122=41002-4=116=0.06250.000123=810002-5=132=0.031250.0000124=16100002-6=164=0.0156250.00000125=32100000:26=641000000:27=12810000000:28=256100000000:29=5121000000000:210=102410000000000:2-m0.000001m个0(包括小数点前一位的0):2n1000000n个01.1.3 八进制与十六进制为了克服二进制书写冗长、不易识别等缺点,在书写或编程序时

9、,经常采用八进制或十六进制的形式来代替二进制。表1.1.2 四种进制数码对照表十进制二进制八进制十六进制十进制二进制八进制十六进制000000091001119100011110101012A200102211101113B300113312110014C401004413110115D501015514111016E601106615111117F7011177161000020108100010817100012111 一、八进位计数制八进位计数制的基数为8,有八个不同的数码0、1、7。八进制的运算规则是“逢八进一,退一当八”。任何一个八进制数N都可以用按位表示法记作: N=(Kn-1 K

10、n-2K1K 0.K-1 K-m)8 其中:Ki=0,1,7。m、n分别表示小数和整数的位数。例如,(637.25)8就是一个八进制数。它的按权展开式为: (637.25)8=6×82+3×81+7×80+2×8-1+5×8-2 由于八进制数与二进制数的基数有如下关系: 81=23 因而一位八进制数,可以用三位二进制数来表示。依据这种关系,可以很方便地实现八进制数与二进制数之间的相互转换。欲将二进制数装换成八进制数,只须将二进制数一小数点为准,整数部分向左、小数部分向右每三位二进制数用一位八进制数表示即可,小数点位置不变。其中对小数部分不足三位

11、的要在右边加零补到三位,对整数部分不足三位的要在左边加零补到三位。例如,将二进制数(11010101.11010101)2转换成八进制:由于 (0)11 010 101 110 101 01(0) 3 2 5 . 6 5 2则(11010101.11010101)2=(325.652)8反之,要将一个八进制转换成二进制,只须用三位二进制数代替每一位八进制数即可,小数点位置不变。 例:(275.642)8=(010 111 101.110 100 010)2这里,由于最左边与最右边的一个0不起作用,因此可以写成(10111101.11010001)2二、十六进位计数制十六进位计数制的基数是16,

12、有十六个不同的数码:09、A、B、C、D、E、F。他们与十进制、二进制、八进制数的关系见表1.1.2。十六进制计数的规则是“逢十六进一,退一当十六”。同八进制一样,任何一个十六进制数N都可以用按位表示法记作:N=(Kn-1 Kn-2K1K 0.K-1 K-m)16例如:数(4C8.6A)16就是一个十六进制数,它的安全展开式为: (4C8.6A)16=4×162+12×161+8×160+6×16-1+10×16-2 由于16进制数与二进制数有如下关系: 161=24因此,一位十六进制数可以用四位二进制数来表示。因此,要将一个二进制数转换成十六

13、进制数,只须将所给的二进制数一小数点为基准,整数部分向左、小数部分向右每四位二进制数用一位十六进制数表示,小数点位置不变。其中不是四位的,整数部分的要在左边加0补足四位,小数部分要在右边加0补足四位。例:(11011111011011.10011010011)2转换成十六进制数,由于 (00)11 0111 1101 1011 . 1001 1010 011(0) 3 7 D B 9 A 6 即(11011111011011.10011010011)2=(37DB.9A6)16反之,把十六进制数转换为二进制数,只须将每一位十六进制数用四位二进制数表示,小数点的位置不变。例如:(6CF.A5)1

14、6转换为二进制数6 C F . A 50110 1100 1111 . 1010 0101即(6CF.A5)16=(011011001111.10100101)2 =(11011001111.10100101)2为区分不同的计数制,可以在数的右下角注明数制,也可在数字后面加一个字母,如字母B(Binary)表示二进制数;字母Q(Octal)表示八进制数,这是为了不与数字O相混淆,把字母O改成Q;字母D(Decimal)或不加字母表示十进制数;字母H(Hexadecimel)表示十六进制数。例如,1101B、35.6Q、427.6D、48CEFH分别表示二进制、八进制、十进制及十六进制数。1.1

15、.4 不同计数值之间的相互转换将一个非十进制数转换成十进制数,常用的方法有两种。1.按权相加法由于任何一个P进制数N都可以写出它的按权展开式:N=Kn-1·Pn-1+Kn-2·Pn-2+K1·P1+K0·P0+Kn-1·P-1+K-m·P-m =i=-mn-1Ki·Pi因此,只要将一个非十进制数展开成上式的形式,然后按十进制的计数规则计算其值,所得的结果就是该数的的十进制表示了。 例1 将二进制数101011.11转换成十进制数。101011.11B=1×25+0×24+1×23+0×

16、22+1×21+1×2-1+1×2-2 =43.75 例2 将十六进制数6EB.7转换成十进制数6EB.7H=6×162+14×161+11×160+7×16-1 =1771.43752.逐位乘(除)基相加法用这种方法将非十进制数转换成十进制数时,须将整数部分和小数部分分别进行转换。(1)整数部分采用逐位乘基相加法设N是一个P进制整数,由它的按权展开式有:N=Kn-1·Pn-1+Kn-2·Pn-2+K1·P1+K0·P0 = (Kn-1·P+Kn-2)P+K1)P+K0 (1

17、.1.3)式(1.1.3)也称为秦九韶算式。步骤如下:(下列计算中,都是按十进制规则进行运算的)先从最高位开始,将最高位乘以基数P,再加上次高位,令其结果为M1;再将M1乘以基数P,然后再加上第三高位,令其结果为M2。如此继续下去知道假设那个最低位为止。最后得到的十进制整数,就是所求的结果。例3 将二进制数1101011转换成十进制数 n-2个括号1101011B=(1×2+1)×2+0)×2+1)×2+0)×2+1)×2+1 =107八进制和十六进制数也可按这种方法转换为十进制数(2)小数采用逐位除基相加法设M是一个P进制小数,由它

18、的按权展开式可得M=K-1·P-1+K-2·P-2+K-m·P-m =(K-m·P-1+K-m+1)P -1+K-1)P-1+0 (1.1.4)按照表达式(1.1.4)进行计算,就可以将一个P进制小数转换为十进制小数。步骤如下:(下面的计算数都是按十进制规则进行的)先从最低为开始,把最低位除以基数P,再加上次低位,令其结果为R1;再把R1除以基数P,再加上第三低位,令其R2。如此继续下去,直到加上小数点左边的0为止。最后得到的十进制小数就是所求的结果。例4 将二进制小数0.1101转换成十进制数。0.1101B=1×2-1+1×2-2

19、+0×2-3+1×2-4 =(1×2-1+0)×2-1+1)×2-1+1)×2-1+0 =0.8125如果一个数及包含整数部分又包含小数部分,那么可以将整数部分和小数部分分别进行转换,再将转换后的整数和小数合成一个数即可。二、十进制数转换成非十进制数1.十进制整数转换成P进制整数N=(Kn-1 Kn-2+K1K 0)P =Kn-1·Pn-1+Kn-2·Pn-2+K1·P1+K0·P0其中Ki为整数且0Ki(P-1) (i=0,1,n-1)。只要求出Ki(i=0,1,n-1),那么问题就解决了。下

20、面求Ki。将上式两端同时除以基数P,则NP=(Kn-1·Pn-2+Kn-2·Pn-3+K2·P1+K1·P0)+K0P显然,NP的商Q1 ,余数R1 分别是Q1 =Kn-1·Pn-2+Kn-2·Pn-3+K2·P1+K1·P0R1 =K0再将Q1 的两端同时除以P,其商和余数分别记为Q2、R2 ,则Q2 =Kn-1·Pn-3+Kn-2·Pn-4+K3·P1+K2·P0R1 =K1如此继续下去,直到商为零,即等式 Qn-1=Kn-1Pn-n的两端在同时除以P ,即 Qn-1P=

21、0+K n-1P此时的商Qn,余数Rn分别为 Qn=0 Rn=Kn-1至此,Kn-1,Kn-2,, K1, K0已全部求出。把最后求出的余数最为最高位,最先求出的余数作为最低位依次排出,就得到数N的P进制表达式了。 例5 将十进制数147转换为二进制数。将十进制整数转换成二进制数,用除二取余法。整个过程可以用一个竖式表示出来。 2 147 2 73 余 1=K0 低位 2 36 余 1=K1 2 18 余 0=K2 2 9 余 0=K3 2 4 余 1=K4 2 2 余 0=K5 2 1 余 0=K6 0 余 1=K7 高位所得的余数按从事那个到下的顺序排列起来,即 147=10010011B

22、例6 将十进制数18603转换成十六进制数。将十进制数转换成十六进制数,用除十六取余法。16 1 8 6 0 3 16 1 1 6 2 余 11=B=K0 低位 16 7 2 余 10=A=K1 16 4 余 8=K2 0 余 4=K3 高位将所有的余数从上到下的顺序排列起来,并用十六进制数码将他们表示出来。18603=48ABH注意:当余数大于十进制数9时,要用十六进制的数码AF表示。2.十进制小数转换成非十进制小数将十进制纯小数转换成P进制小数,采用乘基取整法。将十进制纯小数M转换成P进制小数M=(0.K-1K-2+K-m)P =K-1P-1+K-2P-2+K-mP-m其中K i为整数,且

23、0Ki(P-1) (i=-1,-2,-m)。只要求出Ki(i=-1,-2,-m)就可以了。将上式两端同时乘以基数P,则M×P=K-1+(K-2P-1+K-3P-2+K-mP-m+1)显然,M×P的整数部分L1与小数部分S1分别为: L1=K-1 S1=K-2P-1+K-3P-2+K-mP-m+1再把S1的两端同时乘以P。S1×P的整数部分L2和小数部分S2分别为: L2=K-2 S2=K-3P-1+K-mP-m+2如此进行下去直到小数部分为零,或者计算到满足所有要求的精度为止。例7 将十进制小数0.6875转换成二进制数。将十进制小数转换成二进制小数,采用乘二取整

24、法。 0.6875 × 2 高位 整数 1=K-1 1.3750 × 2 整数 0=K-2 0.7500 × 2 整数 1=K-3 1.5000 × 2 低位 整数 1=K-4 1.0000将所得整数按从上到下的顺序排列起来,就是所求的结果。 0.6875=0.1011B 例7中,经有限次(4次)的乘法运算,小数部分变为零,因此使乘二取整的过程结束。但是,也有乘积的小数部分经有限次乘法而不为零的情形,例如: 0.1D=0.000110011001100B这种情况下可以按照所要求的精确度取相应位数的小数值作为近似值。例8将十进制数1025.3125转换成八

25、进制数。将整数部分与小数部分分别转化为八进制数再将它们合成一个数。整数部分用除八取余法转换,小数部分用乘八取整法转换。即 8 1 0 2 5 小数点 0. 3 1 2 5 8 1 2 8 余1 × 8 8 1 6 余0 2. 5 0 0 0 8 2 余0 × 8 0 余2 4. 0 0 0 0按照箭头所示的顺序得到的数字及小数点排列起来,即为所求的结果:1025.3125D=2001.24Q1.1.5 二进制数的基本运算规则二进制数的运算包括算术运算和逻辑运算两种类型。一、算术运算的基本规则1.一位二进制数的加法运算规则 0+0=0 0+1=1 1+0=1 1+1=10=进

26、位+02.一位二进制数的乘法规则 0×0=0 0×1=0 1×0=0 1×1=1二、逻辑运算的基本规则二进制数的逻辑运算通常包括逻辑与(乘)、逻辑或(和)、逻辑异或及逻辑非(反)四种运算。再组成表达式时,分别用符号“AND”、“OR”、“XOR”及“NOT”作为运算符,也可以分别用“”、“”、“”作为“与”、“或”、“异或”的运算符,用在数字或变量上见一横线来表示对其进行非运算。1.一位二进制数的“与”运算规则 0 AND 0=0 1 AND 0=0 0 AND 1=0 两边的量都为真时才为真,其它都为假 1 AND 1=12.一位二进制数的“或”运算规

27、则 0 OR 0=0 1 OR 0=1 两边的量都为假时才为假,其它都为真 0 OR 1=1 1 OR 1=1 3.一位二进制数的“异或”运算规则 0 XOR 0=0 1 XOR 0=1 两边的量无论同时为真或同时为假均为假, 0 XOR 1=1 其它都为真(两数相乘,同号为正,异号为负) 1 XOR 1=0 4.一位二进制数的“非”运算规则 - NOT 0=1 NOT 1=0§1.2 定点数于浮点数计算机中的数是用二进制表示的。二进制实数在计算机中有两种表示形式,即定点表示形式和浮点表示形式。1.2.1 数的符号表示法为了简化计算机的逻辑设计,用一位二进制数码“0”或“1”来表示数

28、的正、负号,这一位称为符号位,通常放在数的最高位。这样,在计算机中数的符号也数值化了,可以用表示二进制数码的物理元件来表示数的符号。图1.2.1给出了8位带符号数的编码格式。 D7 D6 D5 D4 D3 D2 D1 D0 符号位 数值位 图1.2.1 8位带符号数的编码格式1.2.2 定点数所谓定点数,即小数点在数中的位置是固定不变的。这种表示方法就是定点表示法。在计算机中,二进制的两个数码“0”和“1”是用物理元件的两种不同状态来表示的。在机器中不用专门的物理元件来表示小数点,而是用约定小数点的位置来反映小数点的存在。采用定点表示法对小数点的位置有两种约定,一种是规定小数点固定在最低数值位

29、之后,这种情况下计算机中所能表示的数都是整数;另一种是规定小数点固定在最高数值为之前,这种情况下机器中所能表示的数都是纯小数,如图1.2.2 所示。 符号位 数 值 位 (a)定点整数表示形式 小数点位置 符号位 数 值 位 小数点位置 (b)定点小数表示形式 图1.2.2 定点数的两种表示形式图中,符号位用来表示数的正负,数的符号位一般放在数的最高位。数值位表示数值部分。小数点的位置只是一种约定,用这种方法来反映小数点的存在。由于计算机在表示数据时,其二进制的位数受机器设备的限制,机器设备一次能表示的二进制的位数叫做计算机的字长,一台机器的字长通常是固定的。一般把八位的字长称做一个字节(By

30、te),现在计算机的字长一般都是字节的整数倍。如8位、16位、32位、64位等。当字长为N+1位时(其中一位符号位,N位数值位),一个字长所表示的定点数D的范围是: 定点整数为:-(2N-1)D+(2N-1) 二进制N位数的最大数 定点小数为:-(1-2-N)D+(1-2-N) N位最小小数位(小数点前移N位) N位最大小数位例如,一个字节所表示的定点整数D的范围是-(27-1)D27-1即-127D+127,一个字节所表示的定点小数D的范围是-127128D+127128。在采用定点表示法时,所使用的数据必须限定在定点数所能表示的数的范围之内,否则定点数会产生“溢出”。由于实际数值很少有都是

31、纯小数或者都是纯整数的,因此在采用定点数进行运算时,要选择适当的“比例因子”,使所有的原始数据都按比例因子化成纯小数或整数,计算结果再按比例因子恢复为实际值,以保证运算结果的正确性。1.2.3 浮点数浮点数的小数点位置不是固定的,而是浮动的。这种表示法称为浮点表示法。例如 578.63可以表示为:578.63=57863×10-2 =5.7863×102 =0.57863×103 · · ·这里小数点的位置是可以任意变化的,只要相应的改变10的指数就可以保持原来数值的大小不变。同样,任何一个二进制实数D都可以表示成如下形式: 数符或尾

32、符 阶符 D=±d×2±j 尾数 阶码其中,±d称为D的尾数,是D的有效数值,这里的正、负号称为数符或尾符,表示实数D的符号,±j称为阶码,这里的符号称为阶符。阶码表示小数点的位置,小数点随着阶码的大小而浮动。由此可见,一个浮点数由阶码和尾数两部分组成,阶码部分是固定整数,尾数部分是定点小数,且规定小数点固定在尾数的最高位之前。浮点表示法如图1.2.3所示。 阶码部分 尾数部分 阶符 阶码值 数符 尾数值 小数点位置 图1.2.3浮点数的表示形式若阶码的位数为M+1位(包括阶符一位),尾数的位数为N+1位(包括数符一位),则浮点数D所表示的数的

33、范围为:(如图1.2.4所示) 2-N×2-(2M-1)D(1-2-N)×2(2M-1)上溢区 负数区 下 溢 区 正数区 上溢区 0-(1-2-N)×2(2M-1) -2-N×2-(2M-1) 2-N×2-(2M-1) (1-2-N)×2(2M-1) 图1.2.4 浮点数的表示范围当一个数的值超出了浮点数所能表示的数的范围,则称浮点数产生了“溢出”,这时机器无法表示这个数。由图1.2.4所示的数轴上看,当一个数的阶码大于机器所能表示的最大阶码时,成为上溢。这时计算机不再继续运行,要进行中断处理。当一个浮点数的阶码小于机器所能表示的最

34、小阶码时,称为下溢。下溢时,通常将尾数的各位强置为零,当作零处理,机器仍可以继续运行。例1 将数N1=-11.01011B表示成浮点数。其中阶码4位,尾数8位。解 N1=-11.01011B =-0.1101011×210B0 0 1 0 1 1 1 0 1 0 1 1在计算机中的表示形式为 可以把这种浮点数记为 N1=0,010;1.1101011这里用分号分隔解码部分与尾数部分。解码部分是整数,其符号位与数值位用逗号分隔,因阶码为正数,故符号位为0。尾数部分是小数,其符号位与数值位用小数点分隔,因N1为负数,故符号位为1。例2 将数N2=+0.001101011B表示成浮点数。其

35、中阶码4位,尾数8位。解 N2=+0.001101011B =+0.1101011×2-10在计算机中的表示形式为0 1 1 0 1 0 1 1 1 0 1 0 可以把它标记为 N2=1,010;0.1101011这里阶码为为负数,因此阶码的符号位为1,数N2为正数,故尾数的符号位为0。1.2.4 定点数与浮点数的比较一、数的表示范围当位数相同时,浮点数所表示的数的范围比定点数所表示的数的范围要大。例如,计算机的字长为三十二位,在定点表示法中,用于一位表示数的符号,三十一位表示尾数。若采用定点小数表示法,则所表示的数的范围为-(1-2-31)+(1-2-31)其近似值为-1+1若采用

36、定点整数表示法,那么所能表示的数的范围为-(231-1)+(231-1)其近似值为-2.14×109+2.14×109在浮点表示法中,若用一位表示阶符、七位表示阶码、一位表示数符、二十三位表示尾数,则所能表示数的绝对值的范围为 2-23×2-(27-1)(1-23-23)×227-1即2-150(1-23-23)×2127其近似值为01.7×1038显然,位数相同时,浮点数的表示范围比定点数大得多。并且阶码的位数越多,所表示的数的范围越大,但尾数的有效数字会减少,这样将影响运算的精确度。至于如何分配阶码与尾数的位数,这是由计算机的设计

37、者根据各种因素确定的。二、数的精度为了提高数据的精度,通常哪个是采用规格化的浮点数。规格化的浮点数是当其尾数d的最高位为1,即满足下式12|d|1时,该浮点数即为规格化数。要使浮点数规格化,只须移动尾数并相应的调整阶码的值即可,其操作规则是尾数每右移一位(相当于小数点左移一位),阶码加1,尾数每左移一位,阶码减1。规格化的浮点数的精度远大于定点数的精度。三、数的运算由于浮点数由阶码和尾数两部分组成,因此在运算时不紧要做尾数的运算,还要做阶码的运算,运算结果还要规格化。这样,浮点运算要比定点运算速度慢,运算线路比定点复杂。§1.3 原码、补码、反码、和移码1.3.1 计器数与真值数在计

38、算机中的表示形式称为机器数。机器数有两个基本特点,其一是数的符号数值化了,即用一位二进制数码来表示数的正、负号。其二是二进制数的位数受计算机设备的限制,即计算机中的二进制数的大小是有一定范围的。为了区别一个数原来的形式与它在计算机中的表示形式,把这个数的原来形式称为机器数的真值。机器数常用的编码方法有原码、补码、反码和移码等几种。1.3.2 原码原码是机器数中最简单的一种码制,一个机器数由符号位和数值位两部分组成。原码中规定用数码“0”表示正号,用数码“1”表示负号,其数值位与真值相同,通常把数X的原码记作x原。对于正数,例如:X=+1011010B则X的原码为:x原=0,10111010 这

39、里逗号“,”是书写时为区分符号位和数值位而加上的,在计算机中是不存在的,对于小数而言,则以小数点区分数值位和符号位。对于负数,例如:X=-1011010B则X的原码为; x原=1,1011010对于数字零,可以认为是(+0),也可以认为是(-0),这样数字0有两种原码表示:计算机对这两种情况都做零处理 +0原=0,000-0原=1,000综上所述,当真值x>0时,x原=x当真值x<0时,例如x=11011010B则x原=1,1011010=10000000+1011010 =10000000-(-1011010) =28-1-x由此可见N位(包括一位符号位)二进制整数x的原码可定义

40、为 x 0x2N-1 x原= -2N-1 0 2N-1 2N-1-x -2N-1X0若设x=±xn-2xn-3x1x0,其中xi为0或1(i=n-1,1,0)则 x原=xn-1xn-2x1x0这里xn-1为x的符号位,它满足 0 (x0) xn-1= 1 (x0)类似的有N位二进制小数x的原码可定义为 x 0x1 x原= 1-x -1x0例1 若 x=+1011B y=-1011B 则由定义知 x原=0,1011 y原=24-(-0.1101)=10000+1101=1,1101例2 若 x=+0.1011B y=-0.1011B 则由定义知 x原=0.1011 y原=1-y=1-(

41、-0.1101)=1+0.1101=1.1101由上面例题可知,由真值求原码时,只须在真值的数值位的最高位之前加上符号位即可,这可以避免由定义求原码的加、减运算。原码的特点是1.最高位为符号位,正数的符号位为0,负数的符号位为1。数值位与其真值的绝对值相同。2.数字0的原码有两种形式:整数情况下的两种原码是:0,000和1,000 n个 n-1个小数情况下的两种原码是:0.000和1.000 n个 n-1个3.数的表示范围以n位定点小数为例,分析原码所表示的数据的范围n 位定点 0,000 +0 n 位定点 1,000 -0正数 负数的原码 0,111 +(2n-1-1) 的原码 1,111

42、-(2n-1-1)整数情况下数的表示范围是-(2n-1-1),( 2n-1-1)以n位定点小数为例,分析原码所表示的数据的范围n 位定点 0.000 +0 n 位定点 1.000 -0正小数 负小数的原码 0.111 +(1-2-(n-1) 的原码 1.111 -(1-2-(n-1)小数情况下数的表示范围是-(1-2-(n-1),(1- 2-(n-1)4.乘除法运算简单,加减法运算复杂用原码作加减法运算时,由于参加运算的数可能是正的,也可能是负的,运算时不仅要判断运算是加还是减,还要判断数的符号是否相同以及绝对值的大小。例如两个数相加时要进行判断,两数的符号位是否相同,如果相同则把两个数的绝对

43、值相加,和的符号不变;如果两数异号,则数值部分相减,还要比较绝对值的大小,才能确定实际的被减数和减数,以及所得结果的符号位。可见采用原码作加减法时,不仅增加了运算时间,而且使计算的逻辑线路变得复杂。1.3.3 补码补码表示法可以解决原码加、减法所遇到的问题,使正、负数的加、减法运算简化为单一的加法运算,因而在计算机中被普遍采用。一、补码的概念补码是在“摸”和“同余”的概念下导出的。根据同余的概念有A+NK=A (mod k) (1.2.1)其中:K是模,N为任意整数,A为任意小于模的数,即在模的意义下数A与数A+NK同余。N=1时的同余数又称为补数(在模K的意义下),记作 A补数=A+K (m

44、od k) (1.2.2)例如,当A=-7,k=12时,由式(1.2.1)可得-7+12=-7 (mod 12)即 +5=-7 (mod 12)由式(1.2.2)还可有 -7补数=+5 (mod 12)可见,在模为12的意义下,负数7转换成了正数5,即负数的补数为正数,于是正数和负数相加就可以转换成正数与正数的相加了,如:3+(-7)=3+5 (mod 12)上式可以用时钟来说明,如果时钟现在指向3点,而正确的时间是8点,要把时针拨向8点可以顺拨5小时,或倒拨7小时,其结果是一样的,这是因为时钟盘面上只有12小时,即模为12 小时,此时负数7和正数5在模12的意义下是互补的。当A=+7时,由式(1.2.2)可有 7补数=7+12=7 (mod 12)这说明正数的补数(在模的意义下)是正数的本身。 二、补数的定义 计算机中数的补码表示方法。在计算机的运算过程中,数据的位数即字长总是有限的,当两数相加时,如果在最高位产生了进位,这个进位就会丢失,这正是在模的意义下相加的情况,相加丢掉的最高位就是模。假定计算机的字长为N位,那么这时的模就是2N,2N是一个N+1位的数:1000 N个0 由于计算机的一个字长只能表示N位数,因此当用一个字长来表示2

温馨提示

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

评论

0/150

提交评论