第二章信息表示与输入输出主讲教师:王斌计算机与通信工程学院计算机应用技术系主要内容第一节数值数据的表示第二节非数值数据的表示第一节数值数据的表示计算机中处理的数据是多种多样的,如数值、文字、图像、声音等。这些数据可以粗略地分为两类:数值型数据和非数值型数据,在计算机中都以二进制来表示。因此必须了解二进制代码的有关知识。1.进位计数制2.数制的转换3.无符号数和带符号数4.机器数的编码表示5.机器数的原码、反码和补码表示1.进位计数制计数的方法有很多种,最常见的是十进制计数法。另外还有其他计数制,如一天24小时,称为24进制,一小时60分钟,称为60进制,这些称为进位计数制。计算机系统中几种常用进位计数制:十位制(Decimalnotation)二进制(Binarynotation)八进制(Octalnotation)十六进制数(Hexdecimalnotation)这几种进制包含两个基本要素:基数、位权。1.进位计数制基数:数制中所用到的代码的个数;R进制中具有R个符号:0,1,2,......(R-1);十进制(Decimal):0~9二进制(Binary):0~1八进制(Octal):0~7十六进制(Hexadecimal):0~9、A、B、C、D、E、F位权:不同数位的固定常数;R进制数的第i位的权为Ri,约定整数最低位的位序号为i=0(i=n,...,2,1,0,-1,-2,..如十进制从右面起第一位是个位,第二位是十位,第三位是百位,……。“个(100)、十(101)、百(102)、千(103)……”就是十进制位的“位权”。1.进位计数制进位制项目十进制二进制八进制十六进制具有的符号0,1,2,3,4,5,6,7,8,90,10,1,2,3,4,5,6,70,1,2,3,4,5,6,7,8,9,A,B,C,D基数102816计数规则逢十进一逢二进一逢八进一逢十六进一第i位的权(10)i(2)i(8)i(16)i举例(1994.34)10=1╳103+9╳102+9╳101+4╳100+3╳10-1+4╳10-2(1011.101)2=1╳23+0╳22+1╳21+1╳20+1╳2-1+0╳2-2+1╳2-3(1753.204)8=1╳83+7╳82+5╳81+3╳80+2╳8-1+0╳8-2+4╳8-3(19A5.EBC)16=1╳163+9╳162+A╳161+5╳160+E╳16-1+B╳16-2+C╳16-3表示方法(......)10=......D1994.34D(......)2=......B1011.101B(......)8=......O1753.204O(......)16=......H19A5.EBCH1.进位计数制十进制二进制十六进制0123456700000001001000110100010101100111891011121314151000100110101011110011011110111101234567十进制二进制十六进制89ABCDEF1.进位计数制计算机中使用二进制的原因1)二进制表示的状态便于物理器件实现2)二进制运算规则简单0×0=00×1=01×0=01×1=1基数为R的进制,其求积、求和的公式各有:R(R+1)/2种十进制:55种二进制:3种哈!现在可好了0+0=00+1=11+0=11+1=10我记住了3)便于实现逻辑运算2.数制转换不同数制之间的转换,实质是基数间的转换。一般转换的原则是:如果两个有理数相等,则两数的整数部分和小数部分一定分别相等。因此,各数制之间进行转换时,通常对整数部分和小数部分分别进行转换。①十进制数转二进制数②十进制数转八进制数和十六进制数③二进制与八进制及十六进制之间的转换④非十进制数转十进制数2.数制转换①十进制数转二进制数方法:整数转换用“除2取余法”;小数转换用“乘2取整法”。2.数制转换①十进制数转二进制数例:将(0.745)10转换成四位二进制小数,转换过程如下:0.745×2=1.490取出整数1(最高位)0.490×2=0.980取出整数00.980×2=1.960取出整数10.960×2=1.920取出整数1(最低位)0.920转换结束这里,第四次乘积的小数部分不为0,但已满足题目所要求的精度,所以,(0.745)10≈(0.1011)2。显然,在转换过程中,做的乘法次数越多,结果就越精确。2.数制转换②十进制数转八进制数和十六进制数十进制转八进制:整数部分转换采用“除8取余法”;小数部分转换采用“乘8取整法”。十进制转十六进制:整数部分转换采用“除16取余法”;小数部分转换采用“乘16取整法”。练习:将(253)10转换成八进制和十六进制数2.数制转换③二进制与八进制及十六进制之间的转换2.数制转换④非十进制数转十进制数把各个非十进制数按权展开求和即可。即把二进制数(或八进制数,或十六进制数)写成2(或8或者16)的各次幂之和的形式,然后计算其结果。例:①11111101.1011=1×27+1×26+1×25+1×24+1×23+1×22+0×21+1×20+1×2-1+0×2-2+1×2-3+1×2-4=253.6875②(375)8=3×82+7×81+5×80=253③(FD)16=D×161+F×160=2532.数制转换总结及技巧:数制转换中,关键是二进制与十进制之间的互换,它们之间转换好了,再转成其它进制(八进制、十六进制)就容易多了。3.无符号数和带符号数所谓无符号数,就是指正整数,机器字的全部位均用来表示数值的大小,相当于数的绝对值。N1=01001表示无符号数9N2=11001表示无符号数25对于字长为n+1位的无符号数的表示范围是0~2(n+1)-1。例如:字长为8位,无符号数的表示范围是0~255。3.无符号数和带符号数所谓带符号数,即正、负数。在日常生活中,我们用“+”、“-”号加绝对值来表示数值的大小,用这种形式表示的数值在计算机技术中称为“真值”。对于数的符号“+”或“-”,计算机是无法识别的,因此需要把数的符号数码化。通常,约定二进制数的最高位为符号位,“0”表示正号,“1”表示负号。这种在计算机中使用的表示数的形式称为机器数。3.无符号数和带符号数对于带符号数,最高位用来表示符号位,而不再表示数值位了,前例中的N1、N2在这里变为:N1=01001表示带符号数+9N2=11001表示带符号数-9。4.机器数的原码、反码和补码表示正数:原码、反码、补码表示都与原码相同。负数:原码、反码、补码表示不同。1)原码(Primary)表示符号位数值化,数值位不变。如:X=0.1011B[X]原=0.1011X=-0.1011B[X]原=1.1011X=+1011B[X]原=0,1011X=-1011B[X]原=1,1011默认机器字长5位4.机器数的原码、反码和补码表示0的原码表示:[+0000000]原=0,0000000[-0000000]原=1,0000000[+0.0000000]原=0.0000000[-0.0000000]原=1.0000000结论:零的原码表示不唯一默认机器字长8位原码表示法的优点是简单、直观、容易转换,缺点是进行加、减运算时必须根据两数的符号和数值大小来决定运算结果的符号,这将增加机器的复杂性和运算时间。4.机器数的原码、反码和补码表示2、反码(One’sComplement)表示正数:原码、反码、补码表示都相同(与原码相同)负数:对原码,符号位保持不变,其余各位变反如:X=0.1011B[X]原=0.1011[X]反=0.1011X=-0.1011B[X]原=1.1011[X]反=1.0100X=+1011B[X]原=0,1011[X]反=0,1011X=-1011B[X]原=1,1011[X]反=1,0100默认机器字长5位4.机器数的原码、反码和补码表示0的反码表示:[+0000000]原=0,0000000[+0000000]反=0,0000000[-0000000]原=1,0000000[-0000000]反=1,1111111[+0.0000000]原=0.0000000[+0.000000]反=0.0000000[-0.0000000]原=1.0000000[-0.0000000]反=1.1111111结论:零的反码表示不唯一默认机器字长8位5.机器数的原码、反码和补码表示3)补码表示正数:原码、反码、补码表示都相同(与原码相同)负数:对原码,符号位保持不变,其余各位变反,末位加1如:X=0.1011B[X]原=0.1011[X]补=0.1011X=-0.1011B[X]原=1.1011[X]补=1.0101X=+1011B[X]原=0,1011[X]补=0,1011X=-1011B[X]原=1,1011[X]补=1,0101默认机器字长5位5.机器数的原码、反码和补码表示0的补码表示:[+0000000]原=0,0000000[+0000000]补=0,0000000[-0000000]原=1,0000000[-0000000]补=0,0000000[+0.0000000]原=0.0000000[+00000000]反=0.0000000[-0.0000000]原=1.0000000[-00000000]补=0.0000000结论:零的补码表示唯一默认机器字长8位4.机器数的原码、反码和补码表示引入补码的目的:变减法为加法使符号位能同数值位一起参加运算数补码2000000108000010001100001011-311111101-511111011-811111000①2+(-5)=-3000000102+11111011-511111101-3③11+(-3)=80000101111+11111101-3000010008②-3+(-5)=-811111101-3+11111011-511111000-8两补码数之和=和的补码4.机器数的原码、反码和补码表示哇!这么简单减法:负数用其补码表示,减法----加法乘法:边移位边做加法----移位和加法除法:边移位边做减法----移位和加法移位和加法解决了四则运算小结1.进位计数制2.数制的转换3.无符号数和带符号数4.机器数的编码表示5.机器数的原码、反码和补码表示