1一、常用数制二、十、八、十六进制二、数制间的转换三、二进制数的运算算术运算和逻辑运算复习上节课内容:22.4数值型数据的表示及处理2.5文字的表示和处理本节课内容:3本节课主要知识点:原码、反码和补码的表示浮点数的表示ASCII码汉字的机内码汉字输出的形式常见文本类型4在计算机内能表示和使用的数据包括:无符号整数整数数值型数据有符号整数实数非数值型数据2.4数值型数据的表示与处理52.4.1定点数表示定点数的概念:–约定小数点在某个固定的位置,整数可以用定点数表示,约定小数点在个位数的右面.整数的分类6整数的分类:–不带符号的整数(8位,16位,32位)–带符号的整数(正整数,负整数)符号位:使用最高位(最左面的一位)作为符号位“0”----“+”(正数)“1”----“-”(负数)其余各位表示数的绝对值例如:00101011=+43,10101011=-437整数(定点数)表示有符号的整数可以有三种表示方法:原码反码补码8原码表示:最高位作为符号位若符号位为0,则表示正数.若符号位为1,则表示负数.其余各位代表数值本身的绝对值(以二进制表示)(1)原码表示9例1:假设用一个字节来表示一个数,求+7和-7的原码。解:根据原码的定义:(+7)原=00000111(-7)原=10000111结论:绝对值相同的正数和负数,它们除了符号位不同外,其他各位都相同。8421111110例2:假设用一个字节来表示一个数,求0的原码。解:根据原码的定义:+0的原码=00000000-0的原码=10000000结论:0的原码不唯一分析:当由数轴的左端趋向0时,我们记为-0当由数轴的右端趋向0时,我们记为+0+0-011假设用一个字节表示一个数用原码表示的最小值为:-127,其原码为:11111111用原码表示的最大值为:+127,其原码为:01111111原码的表示范围:所以,原码的表示范围为:–127—+12712(2)反码表示表示方法:1.一个数如果值为正,则它的反码与原码相同;2.一个数如果值为负,则将其符号位置为1,其余各位为对原码的相应数据位取反取反:二进制中有0和1两种状态,取反就是取与当前状态相反的状态(相当于电子器件的高低电平)。1取反=00取反=113例3:假设用一个字节来表示一个数,求+7和-7的反码。解:根据反码的定义:(+7)反=00000111(-7)反=(10000111)反=111110008421111114例4:假设用一个字节来表示一个数,求0的反码。解:根据反码的定义:+0的反码=00000000-0的反码=11111111结论:0的反码不唯一15假设用一个字节表示一个数。用反码表示的最小值为:-127,其反码为:10000000用反码表示的最大值为:+127,其反码为:01111111所以,反码的表示范围为:–127—+127反码的表示范围:(因为原码的表示范围也是–127—+127,所以反码的表示范围与原码是一致的。)16(3)补码表示*计算机中使用补码的原因:在加减法运算中,对参与运算的数符号正负的判断问题*补码的原理:(即为什么用补码可以实现减法按加法处理?)*时钟原理*补数的概念17补码表示方法规定:正数的补码:与反码、原码相同.负数的补码:则将其最高位置为1,其余各位为对原码的相应数据位取反,然后再对整个数加1.补充公式:X为负数时[x]补=[x]反+1成立18例5:假设用一个字节来表示一个数,求+7和-7的补码。解:根据补码的定义:[+7]补=00000111[-7]反=11111000[-7]补=11111000+11111100119例6:假设用一个字节来表示一个数,求0的补码。解:根据补码的定义:进位舍去[+0]补=00000000[-0]反=11111111[-0]补=11111111+1100000000[-0]补=00000000结论:0的补码是唯一的。20用补码进行运算例7:假设用一个字节来表示一个数,求+7-6的值解:[+7]补=00000111[-6]补=11111010[+7]补+[-6]补=00000111+11111010100000001进位舍去=00000001说明:补码的减法可以按加法来处理21假设用一个字节表示一个数。用补码表示的最大值:+127,其补码为:01111111。用补码表示的最小值:-128,其补码为:10000000。所以,用补码表示的数的范围是:-128—+127补码的表示范围:注意:用补码表示的数的范围比原码和反码多一个数。为什么?22补码如何向原码转换?思考题:23几种整数表示法的比较8位二进制代码无符号整数原码补码0000000000000000001111……………………01111111127127127100000001280-12810000001129-1-127……………………11111111255-127-124BCD码BCD整数(BinaryCodedDecimal)称为“二进制编码的十进制整数”,使用4个二进位表示1个十进制数字,最高位仍为符号位。例如:(-51)BCD=101010001(+3276)BCD=0001100100111011025引入浮点数的目的:•在一定字长下,整数数值的表示范围有限;•实际的数据往往有整数部分又有小数部分;•实际数据有的特别大,有的特别小。2.实数(浮点数)的表示26很多高级程序语言,数值型数据都可以写成如下形式4.32E-2表示4.32×10-2=0.04320.432E-1表示0.432×10-1=0.0432联想一下,十进制中科学计数法,两者很类似,但又不同。27基数(R):通常隐含为2尾数(M):必须是二进制定点纯小数尾数的位数决定数的精度阶码(E):必须是二进制定点整数。阶码的位数决定数的范围浮点数可表示成:阶码基数尾数N=M·RE28例如假设某机器字长为16位,规定前6位表示阶码(包括阶码符号),后10位表示尾数(包括尾数符号),(阶码和尾数用原码表示)则0001011110101000表示的浮点数是:29=-(26.5)100001011110101000阶码尾数-(0.110101)2×2+(101)2符号位=(-11010.1)230实数(浮点数)的表示范围和类型浮点数的长度可以是32位、64位或更长。一般说来,位数越多,可表示的数的范围越大(阶码),精度越高(尾数)浮点数(实数)分类:短浮点数、浮点数、长浮点数、高精度浮点数endof2.431一、西文字符编码二、汉字编码三、汉字的输入和输出四、文本处理2.5文字的表示和处理321.ASCII码(重点)ASCII码,即美国标准信息交换码(AmericanStandardCodeforInformationInterchange),使用7个二进位对字符进行编码。一、西文字符编码33基本的ASCII字符集共有128个字符95个可打印字符(常用字母、数字、标点符号)33个控制字符(不可直接显示或打印)特殊字符的ASCII码空格(32)、A(65)、a(97)、0(48)下面为ASCII代码表:34见课本P3235对ASCII码的说明:每个字符用标准规定的7位二进制数表示,在机内占一个字节(最高位为0)。如:字符“A”的ASCII码为:(01000001)2或(65)10、(101)8、(41)16字符“0”的ASCII码为:(00110000)2或(48)10、(60)8、(30)1636对ASCII码的要求:1.学会比较ASCII字符的大小(按其ASCII码值)空格<0~9<A~Z<a~z2.会推算同组字符ASCII码值如A的ASCII值(十进制)为65,则B、C…的ASCII值分别为66、67…37扩展ASCII码(了解)ISO陆续制定了一批适用于不同地区的扩充ASCII字符集,每种扩充ASCII字符集分别可以扩充128个字符,这些扩充字符的编码均为高位为1的8位代码(即十进制数128-255),称为扩展ASCII码。38定义方式:用8位二进制数位表示一个字符的扩充二-十进制交换码.特点:每个字符对应一个字节,共256种说明:有很多编码没有使用,保留做为扩充。2.EBCDIC码(了解)3940二、汉字编码1981年,国家颁布的《信息交换用汉字编码字符集-基本集》(GB2312-80)(国标码)。组成:(1)第一部分:字母、数字和各种符号,包括拉丁字母、俄文、日文平假名与片假名、希腊字母、汉语拼音等共682个(统称为GB2312图形符号)1.GB2312-80汉字编码(重点)41(2)第二部分:一级常用汉字,共3755个,按汉语拼音排列(3)第三部分:二级常用汉字,共3008个,按偏旁部首排列汉字共6763个字符共7445个42区位码:GB2312-80是一个二维代码表,有94行、94列,汉字在代码表中的位置用它所处的行号、列号表示。行号区号列号位号1.GB2312-80汉字编码(重点)43例如:“大”字的区号20,位号83,区位码是2083用2个字节表示为:000101000101001183列20行大44一级汉字(3755个)二级汉字(3008个)(扩充使用)位号:………………19423字母、数字和各种符号…………区号:191655568794GB2312-80字符集881.GB2312-80汉字编码(重点)45国标交换码–问题:信息通信中,汉字的区位码与通信使用的控制码(00H~1FH)发生冲突。–解决方案:为了避免汉字区位码与通信控制码的冲突,每个汉字的区号和位号必须分别加上32。得到的代码称为汉字的“国标交换码”1.GB2312-80汉字编码(重点)46例如:“大”字的区号20,位号83区位码:2083二进制表示为:0001010001010011国标交换码:52115(+32)二进制表示为:001101000111001147机内码–问题:文本中的汉字与西文字符经常是混合在一起使用的,汉字信息如不予以特别的标识,它与单字节的标准ASCII码就会混淆不清。–解决方法:使表示GB2312汉字的两个字节的最高位(b7)都置为“1”。这种汉字编码,称为GB2312汉字的“机内码”。1.GB2312-80汉字编码(重点)48例如:“大”字区位码:2083二进制表示为:0001010001010011国标交换码:52115(+32)二进制表示为:0011010001110011机内码:180243(+128)二进制表示为:1011010011110011(B4F3)区位码+32=国标码国标码+128=机内码49问题:GB2312-80只有6763个汉字,使用时功能不够。解决方法:1995年发布GBK,全称为《汉字内码扩展规范》GBK字符集中一共有21003个汉字和883个图形符号,它与GB2312国标汉字字符集及其内码保持兼容。组成:共收入21886个汉字和图形符号(21003个汉字,883个图形符号)2.GBK汉字内码扩展规范(了解)50GBK编码区分三个部分:汉字区(21003个汉字)、图形符号区、用户自定义区GBK每一个字符都采用双字节表示:总体编码范围为:8140H-FEFEH,共23940个码位;首字节范围:81H-FEH;尾字节范围:40H-FEH;2.GBK汉字内码扩展规范(了解)51目的:统一的多文本处理环境,实现所有字符在同一字符集中统一编码。优点:编码空间极大(4个字节),能容纳足够多的各种字符集(13亿字符)缺点:4字节的字符编码使存储空间浪费严重3.UCS/Unicode汉字编码(了解)52克服:UCS-2是双字节编码,共有字符49194个,其中包括:–欧洲及中东地区使用的拉丁字母、音节文字–各种标点符号、数学符号、技术符号、几何形状、箭头及其他符号–中、日、韩(CJK)统一编码的汉字53GB18030-2000编码标准在GB2312和GBK编码标准的基础上进行了扩充,采用单字节、双字节和四字节三种方式对字符编码,因此该标