第1章计算机中的数制和编码教学重点•各种进位计数制及其转换•原码、反码、和补码运算基础•定点数和浮点数•BCD码和ASCII码。教学要求•熟练掌握有符号数的表示方法--------即原码、反码、和补码的定义、求法•掌握补码运算的特点和基本法则,会用补码加、减法,理解溢出的概念,掌握溢出的判别方法•掌握定点数、浮点数的特点、表示方法•理解BCD码的作用,会BCD码的加、减法•掌握字符的表示方法—ASCII码。第1章计算机中的数制和编码•1.1数和数制•1.2带符号数在计算机中的表示•1.3定点数和浮点数•1.4BCD码•1.5计算机中字符的表示1)十进制数按进位原则进行计数的方法,称为进位计数制。十进制数有两个主要特点:(1)有10个不同的数码符号:0、1、2、…、9;(2)低位向高位进位的规律是“逢十进一”。因此,同一个数字符号在不同的数位所代表的数值是不同的。如555.5中4个5分别代表500、50、5和0.5,这个数可以写成555.5=5×102+5×101+5×100+5×10-1式中的10称为十进制的基数,102、101、100、10-1称为各数位的权。1.1数和数制任意一个十进制数N都可以表示成按权展开的多项式:inmiimmnnnnddddddN1010...1010...1010111002211其中,di是0~9共10个数字中的任意一个,m是小数点右边的位数,n是小数点左边的位数,i是数位的序数。例如,543.21可表示为543.21=5×102+4×101+3×100+2×10-1+1×10-22)进位数的通用表示一般而言,对于用R进制表示的数N,可以按权展开为式中,di的值是0、1、…、(R-1)中的任一个,m、n是正整数,R是基数。在R进制中,每个数字所表示的值是该数字与它相应的权Ri的乘积,计数原则是“逢R进一”。inmiimmnnnnRRdRdRdRdRdRdN111002211......例:一个16进制数[123.4]16=1*162+2*161+3*160+4*16-13)(后缀加上B)当R=2时,称为二进位计数制,简称二进制。在二进制数中,只有两个不同数码:0和1,进位规律为“逢二进一”。任何一个数N,可用二进制表示为inmiimmnnnnddddddN22...22...22111002211例如,二进制数1011.01(1011.01)2=1×23+0×22+1×21+1×20+0×2-1+1×2-2=1011.01B4)(后缀加上H)当R=16时,称为十六进制。在十六进制中,有0、1、2、…、9、A、B、C、D、E、F共16个不同的数码,进位方法是“逢十六进一”。例如,(3A8.0D)16(3A8.0D)16=3×162+10×161+8×160+0×16-1+13×16-2=3A8.0DH5)(后缀加上O)当R=8时,称为八进制。在八进制中,有0、1、2、…、7共8个不同的数码,采用“逢八进一”的原则进行计数。如(503)8(503)8=5×82+0×81+3×80=503O表1.1各种进位制的对应关系十进制二进制八进制十六进制十进制二进制八进制十六进制000091001119111110101012A2102211101113B3113312110014C41004413110115D51015514111016E61106615111117F7111771610000201081000108二、数制之间的相互转换1.二、八、十六进制转换成十进制例1将数(10.101)2,(46.12)8,(2D.A4)16转换为十进制。(10.101)2=1×21+0×20+1×2-1+0×2-2+1×2-3=2.625(46.12)8=4×81+6×80+1×8-1+2×8-2=38.15625(2D.A4)16=2×161+13×160+10×16-1+4×16-2=45.64062任意进位数制,按权展开相加求和,计算出数值,即可得到对应的十进制数。2.十进制数转换成二、八、十六进制数任意十进制数N转换成R进制数,需将整数部分和小数部分分开,采用不同方法分别进行转换,然后用小数点将这两部分连接起来。(1)整数部分:除基取余法。分别用基数R不断地去除N的整数,直到商为零为止,每次所得的余数依次排列即为相应进制的数码。最初得到的为最低有效数字,最后得到的为最高有效数字。例2将(168)10转换成二、八、十六进制数。(2)小数部分:乘基取整法。分别用基数R(R=2、8或16)不断地去乘N的小数,直到积的小数部分为零(或直到所要求的位数)为止,每次乘得的整数依次排列即为相应进制的数码。最初得到的为最高有效数字,最后得到的为最低有效数字。例:将(168.645)10转换成二、八、十六进制数。根据例2、例3可得(168.645)10=(10101000.10100)2=(250.51217)8=(A8.A51EB)163.由于23=8,故可采用“合三为一”的原则,即从小数点开始分别向左、右两边各以3位为一组进行二—八换算:若不足3位的以0补足,便可将二进制数转换为八进制数。反之,采用“一分为三”的原则,每位八进制数用三位二进制数表示,就可将八进制数转换为二进制数。例5将(101011.01101)2转换为八进制数。101011.01101053.32即(101011.01101)2=(53.32)8例将(123.45)8转换成二进制数。123.451010011.100101即(123.45)8=(1010011.100101)二进制数的算术运算二进制数只有0和1两个数字,其算术运算较为简单,加、减法遵循“逢二进一”、“借一当二”的原则。1.加法运算规则:0+0=0;0+1=1;1+0=1;1+1=10(有进位)例1求1001B+1011B。2.规则:0-0=0;1-1=0;1-0=1;0-1=1(有借位)例2求1100B-111B。3.乘法运算规则:0×0=0;0×1=1×0=0;1×1=1例3求1011B×1101B。即10100101B/1111B=1011B4.除法运算规则:0/1=0;1/1=1例4求10100101B/1111B二进制数的逻辑运算1.“与”运算“与”运算是实现“必须都有,否则就没有”这种逻辑关系的一种运算。运算符为“·”,其运算规则如下:0·0=0,0·1=1·0=0,1·1=1例5若X=1011B,Y=1001B,求X·Y。100110011011.即X·Y=1001B2.“或”“或”运算是实现“只要其中之一有,就有”这种逻辑关系的一种运算,其运算符为“+”。“或”运算规则如下:0+0=0,0+1=1+0=1,1+1=1例若X=10101B,Y=01101B,求X+Y。101010110111101+即X+Y=11101B3.“非”“非”运算是实现“求反”这种逻辑的一种运算,如变量A的“非”运算记作。其运算规则如下:A10,01例若A=10101B,求。ABBA01010101014.“异或”运算“异或”运算是实现“必须不同,否则就没有”这种逻辑的一种运算,运算符为“”。其运算规则是:011,101,110,000例若X=1010B,Y=0110B,求XY。101001101100即XY=1100B1.2带符号数在计算机中的表示先讲几个概念:1.位和字节•位(bit)是计算机所能表示的最小最基本的数据单位,它指的是取值只能为0或1的一个二进制数值位。位作为单位时记作b•字节(byte)由8个位二进制位组成,通常用作计算存储容量的单位。字节作为单位时记作BK是kilo(千)的缩写,1K=1024=210;M是mega(百万)的缩写,1M=1024K=220;G是Giga(十亿,千兆)的缩写,1G=1024M=230;T是tera(万亿)的缩写,1T=1024G=240。2.字长•字长是微处理器一次可以直接处理的二进制数码的位数,它通常取决于微处理器内部通用寄存器的位数和数据总线的宽度。微处理器的字长有4位、8位、16位和32位等等。•字长越长,微处理器处理的二进制有效位数越多,速度越快,计算的精度也越高。通常一个二进制数在计算机中表示的时候,总是要占用一些位空间(专门存放二进制数的位空间),二进制数在计算机中占用多少个位空间并不是由这个二进制数的实际二进制位数决定,而是通常以字长为单位来表示。例如一个无符号数十进制数9,二进制为1001B,占用4个二进制数。但在计算机中,如果计算机的字长为8:那么可以表示为:00001001数值位是8位(即用8个二进制位空间来表示这个十进制数9或二进制数1001B)二进制数在计算机中的表示:一、机器数及真值但是,计算机在数的运算中,不可避免地会遇到正数和负数,那么正负符号如何表示呢?由于计算机只能识别0和1,因此,在计算机中将一个(在计算机中以该计算机字长为单位的)二进制数的最高位用作符号位来表示这个数的正负。规定符号位用“0”表示正,用“1”表示负。机器数:最高位表示符号,其余位表示数值。例1.10将X1=+42,X2=-42,X3=+91,X4=-91表示为机器数和真值若字长n=8,[X1]真=+101010B=+42机器数:00101010[X2]真=-101010B=-42机器数:10101010[X3]真=+1011011B=+91机器数:01011011[X4]真=-1011011B=-91机器数:11011011机器数:最高位表示符号,其余位表示数值。这里的数值位:用的是真值的绝对值来表示,不够8位的补0,(最高位除外)若字长n=16,[X1]真=+101010B=+42机器数:00000000,00101010[X2]真=-101010B=-42机器数:10000000,00101010[X3]真=+1011011B=+91机器数:00000000,01011011[X4]真=-1011011B=-91机器数:10000000,01011011机器数:最高位表示符号,其余位表示数值。机器数的定义:在机器中,用二进制数表示有符号数,用最高位表示符号,其余位为数值位,这样一组连同符号一起编码化的二进制数称为机器数机器数有3种表示方法:原码、反码和补码二、机器数的原码、反码和补码1..当正数的符号位用0表示,负数的符号位用1表示,数值部分用真值的绝对值来表示的二进制机器数称为原码。例如:+115和-115在计算机中(设机器数的位数,也就是字长是8)[+115]原=01110011B;[-115]原=11110011B真值X与原码[X]原的关系为(设字长=n,2,][1XXXn原值得注意的是,对于8位字长的计算机:[+0]原=00000000B,而[-0]原=10000000B,所以数0的原码不唯一。8位二进制原码能表示的范围是:-127~+127。1201nx0)12(1xn对于16位字长的计算机:[+0]原=0000000000000000B,而[-0]原=1000000000000000B,所以数0的原码不唯一。16位二进制原码能表示的范围是:-32767~+32767。原码表示范围:)12(~)12(11nn2.正数的反码,等于该数的原码;负数的反码,由它的正数的原码符号位除外,其余位按位取反形成。反码用[X]反表示。若X=-Xn-2Xn-3…X1X0,则[X]反=1Xn-2Xn-3…X1X0。例如:X=+103,则[X]反=[X]原=01100111B;X=-103,[X]原=11100111B,则[X]反=10011000B。|,|)12()12(,][11XXXXnn反022011XXnn小结:1)反码“0”有两种表示方法: