信息编码•信息是无形的,需要载体来表示。•计算机内部运行的符号系统是二进制码•把各种形态的信息转化成二进制形式的过程就是信息的编码,反之,就是解码。手指游戏(凑数法)•从小手指开始,在每个手指上分别标注1,2,4,8,16,然后通过伸手指来表示以下数值。•7152331191130•9131620272510计算机的存储•位bit:存储信息的最小单位binarydigit•字节Byte(简称B):存储信息的基本单位•1Byte=8bit•1KB=210B=1024B•1MB=210KB=1024KB•1GB=210MB=1024MB•1TB=210GB=1024GB字符编码一、ASCII码ASCII码(AmericanStandardCodeforInformationInterchange)中文名称是“美国信息交换国家标准代码”,已被国际标准化组织认定为国际标准。计算机中的英文字符、各种符号都是使用ASCII码。ASCII码是一种1字节编码。1个字节编码的范围是00000000B~11111111B(十进制数范围为0~255,十六进制数范围为00H~FFH,B代表二进制,H代表十六进制),这样ASCII码最多可表示256个不同的字符。具有256组编码的ASCII码又被分为两大部分:基本ASCII码和扩充ASCII码。1、基本ASCII码在ASCII码中,二进制最高位为0的编码为基本ASCII码,其编码范围是十进制数0~127(即00000000B~01111111B或00H~7FH),即基本ASCII码有128组编码。可见,基本ASCII码只需要7位二进制进行编码就可以了,所以又称为7位字符编码。在实际存储时,由于存储器是按字节作为最小单位来组织的,7位编码仍然需要占用1个字节的存储空间,必须在编码前补一个二进制数0,使者成为一个字节。基本ASCII码又可分为3大块:0~31(00H~1FH)为控制代码;32~126(20H~7EH)为可显示字符代码;127(7FH)为报警符。控制码在计算机中不作为字符来显示,而是作为某一特定动作的功能代码。例如,代码7的功能是使主机中的扬声器鸣声,代码10(20H)是空格字符,65(41H)是字符“A”,97(61H)是字符“a”。完整的基本ASCII码表如下表所示:ASCII字符编码表2、扩充ASCII码从上表中可以看出,ASCII码的最大编码值为127(对应的二进制数为11111111B),最小的可显示字符编码为32。因此基本ASCII码未用到字节的最高位(第8位),可理解为最高位为0。如果最高位为1,则属于扩充ASCII码。扩充ASCII码的二进制最高位是1,其范围为128~255。扩充ASCII码也是128个,虽然这些代码也有国际标准,但它们是可变字符。各国都利用扩充ASCII码来定义自己国家的文字代码。例如,日本把其定义为片假名字符,我国则将其定义为中文文字的代码。韩国、朝鲜、越南、德国、法国、俄罗斯等其它国各有其定义。3、文本文件和非文本文件只含有基本ASCII码中可显示字符码的文件称为文本文件或正文文件,它是可以通过操作系统内部命令直接在屏幕上显示的文件。文本编辑器(如DOS中的EDIT、Windows的“记事本”)生成的文件都是文本文件,各种计算机语言源程序也是文本文件。而字处理软件(如WPS、Word2000、Word2003、Word2007、Word2010、方正排版系统等)生成的文件不是文本文件,因为这些文件中不但含有文本,还含有很多格式信息(如字型、字号、行间距、行宽等)。中文文件也不是文本文件,因为中文文件中的中文字符不是基本ASCII码。凡是含有不可显示字符或非基本ASCII码字符的文件,统称为非文本文件,或称为二进制文件。非文本文件又有文档文件(如汉字文件)、可执行程序(如在DOS系统中扩展名为EXE、COM的可执行文件)等,不能以一般的方式在屏幕上显示其内容,因为文件中的不可显示字符被视为控制代码,可能会使屏幕显示出错(出现乱码),有时会扰乱系统的显示功能。如果是文档文件,应该用相应的字处理软件进行显示或处理。一般来说,一个字处理软件生成的文档,只能在该字处理软体中才能正确地显示,除非字处理软件具有识别或转换其它字处理软件生成的文档的能力,如Word97/2000/2003/XP/2007/2010就能显示和处理其它常用字处理软件生成的文档。1.1.7.2字形编码计算机显示的字符是从ASCII码转化为字符点阵来实现的。常用的字符输出有两种手段:屏幕显示和打印输出。例如,如果要输出字符H,则不应输出其编码72或对应的二进制数、十六进制数,而应输出字形H。这种用于输出的、表示字符字形的数据,称为字形编码。屏幕显示时,字形编码为1的点则亮,为0的点则不亮;打印机输出时,计算机控制打印机的打印针,有的打下去,有的不打,便打出所需的符号和文字。字符编码的长度(字节数)依赖于编码的方法。对于点阵字符,编码长度是点数除以8。例如,西文字符的点阵可以用5行7列的二进制位组成,即5X7点阵,如下图所示:字符I、B、H的5X7点阵图每个字符由35个点来构成,因而需要35/8≈5个字节;汉字至少要用16X16点阵(显示),即至少需要32字节。可见,如果用字形编码来存储文件,将占用很多的存储空间,因而,计算机内部总是存储字符编码,而不存储字形编码,只在输出时根据字符编码(如ASCII码),在字形编码库中取出相应的字形码,送到输出设备(屏幕或打印机)去输出。1.1.7.3内码和外码内码是指电子计算机内部进行存贮、传递和运算所使用的数字代码。例如,字符“A”的内码是65(41H),外码是指电子计算机与人进行交换的字形代码,例如,字符“B”的外码是它的字形编码。在计算机的键盘上进行输入的过程是“外码→内码”的转换,用户把键盘上的字形符号即外码键入到计算机,计算机把它转换成机器可识别的内码后再存于内存。而计算机用屏幕或打印机输出信息的过程是“内码→外码”的转换,也就是计算机把内存中的数字(内码)转换为约定的字形输出到显示器或打印机。1.1.7.4汉字内码汉字的数量大,常用汉字约4000~5000个。由于1个字节有8位二进制数,因此至多表示256种状态。如果用一个字节来表示一个汉字,无法区分如此多的汉字。为了能表示汉字,1个汉字的内码用两个扩充的ASCII码组成,即汉字内码为两个字节。要让汉字正确传递和交换,必须建立统一的编码,否则会造成混乱。我国国家标准局于1981年公布了国标GB2312---80汉字编码字符集。该标准规定,全部汉字及符号构成94X94的矩阵。在此矩阵中,每一行称为一个区,每一列称为一个位。这样便组成了一个有94区(01~94),每区有94位(01~94)的汉字字符集。区码和位码组合在一起(即两位十进制区码在前,后跟两位十进制位码)便形成了“区位码”。区位码可以唯一确定某一汉字或符号,反之,任一汉字或符号唯一对应一个区位码。汉字区位码的划分如下:1~15区:图形符号区,其中1~9区为标准区,10~15区为自定义符号区。16~55区:一级常用汉字,按汉语拼音排序,同音字按笔划顺序排列,共有3755个汉字。55区的90~94位没有定义。58~87区:二级汉字,即非常用汉字和偏旁部首,按笔画顺序排列,有3008个汉字。88~94区:自定义汉字区。汉字的内码正是在上述区码和位码的基础上演变而来的。如上面汉字的区码或位码的范围在1~94,如果直接利用其作为汉字内码,就会与基本ASCII码相冲突。因此,汉字的两位内码是按如下的规则来确定的(如果把汉字内码按2个字节划分,前一个字节为高位字节,后一个字节为低位字节):高位字节=区码+32+128(=区码+20H+80H)低位字节=位码+32+128(=位码+20H+80H)在区码和位码上都加上20H是为了避开基本ASCII码的控制码:加上80H是为了把最高二进制位(即第8位)定为1,使高位字节和低位字节都为扩充的ASCII码。这样高位字节和低位字节所表示的内码范围在161~254(A1H~FEH)之间。这就是汉字字符集为94X94的原因。例:“薄”是第17区,第1位的汉字,即区码为11H,位码为01H。所以,高位字节=11H+20H+80H=31H+80H=00110001B+10000000B=10110001B=B1H低位字节=01H+20H+80H=21H+80H=00100001B+10000000B=10100001B=A1H因此,“薄”的内码是B1A1H,是由十进制177和161两个扩充ASCII码表示的。1.1.7.5汉字外码西文的每一个外码都与键盘上的按键一一对应,但对于汉字却不可能如此,否则仅仅汉字键最少也要三千多个按键。汉字的外码即它的输入码,在汉字信息处理上一直是人们在大量探讨、研究的课题,这是汉字处理上一个复杂的问题,也是影响汉字输入速度的关键。目前,最常见的汉字输入码(外码)编码法有:1、音码根据汉字的汉语拼音或拼音的缩写用字母或数字作编码。如全拼音码、双拼音码、简化紧缩拼音码、搜狗输入法、百度输入法、谷歌输入法、QQ拼音输入法等。2、形码根据汉字结构特征的笔形编码,或根据形状进行编码,也有从字形出发划分字根进行编码的。如表形码、五笔字形码、郑码、仓颉码等。3、数码以数字作为输入编码。如电报码、国标码、区位码等。4、音形混合码以字的音为主,字形为辅。如自然码、快速码等。1.1.7.6汉字字形码存储在计算机内的汉字需要在输出设备上输出,才能被人们认识和理解。汉字内码是汉字的代号,不能直接在输出设备上输出,而要根据汉字内码检索出相应的字形信息,才能在输出设备上产生汉字图形。表示汉字图形的代码称为汉字字形码。在目前的汉字处理系统中,字形编码大致有两种类型:点阵码和矢量码。用于显示输出的主要是点阵码,而用于其它输出的则有点阵码和矢量码。点阵码占用的存储空间比较大,而且在进行字号变化时效果很差,但可以直接送到输出设备进行输出。矢量码则占用的存储空间较少,进行字号变化时不会改变字形,效果较好,但需要进行适当处理后才能送到输出设备进行输出。1.1.7.7汉字交换码汉字交换码是用于不同计算机汉字系统之间进行信息交换的汉字代码。因为实际汉字系统中使用的汉字内码不尽相同,必须采用统一的编码才能在不同系统间交流汉字信息。目前国内使用的汉字交换代码是“中国国家标准信息交换用汉字编码字符表——基本集”,即GB—2312—80(简称国标码)及若干辅助集。观察ASCII码表P108ASCII码由7位二进制组成,高三位和低四位34个控制字符、10个阿拉伯数字、26个大写字母、26个小写字母、32个各种标点符号和运算符号,总计34+10+26+26+32=128个字符。其中,不可打印字符34个,可打印字符94个。N个二进制位能表示出2N种信息N个R进制位能表示出RN种信息请用ASCII码表示Iknowyou!对照ASSCII字符编码表,可知阿拉伯数字0的二进制编码为0110000,转化为十六进制数为30H,故数字0的十六进制编码为30H(在往年的考试中,均以十六进制数的形式表示),以此类推:0的编码为0110000(30H),1的编码为0110001(31H),2的编码为0110010(32H),3的编码为0110011(33H),4的编码为0110100(34H),5的编码为0110101(35H),6的编码为0110110(36H),7的编码为0110111(37H),8的编码为0111000(38H),9的编码为0111001(39H)故0~9的编码为30H~39H对照ASSCII字符编码表,可知大写字母A的二进制编码为1000001,转化为十六进制数为41H,故大写字母A的十六进制编码为41H(在往年的考试中,均以十六进制数的形式表示),以此类推:A的编码为1000001(41H),B的编码为1000010(42H),C的编码为1000011(43H),D的编码为1000100(44H),E的编码为1000101(4