1提纲一计算机中字符的表示(ASCII码)二计算机中中文字符的表示2概述在计算机中,各种信息都是以二进制编码的形式存在不管是文字、图形、声音、动画,还是电影等信息,在计算机中都是以0和1组成的二进制代码表示计算机之所以能区别这些不同的信息,是因为它们采用的编码规则不同比如:同样是文字,英文字母与汉字的编码规则就不同,前者采用单字节的ASCII码,后者采用双字节的汉字内码但随着需求的变化,这两种编码有被统一的UNICODE码(由Unicode协会开发的能表示几乎世界上所有书写语言的字符编码标准)所取代的趋势一、计算机中字符的表示(ASCII码)ASCII(AmericanStandardCodeforInformationInterchange,美国标准信息交换码)规定了常用的数字、字符的编码。标准ASCII码采用7位二进制编码,对应的ISO标准为ISO646标准,最多可以表示128个字符。每个字符可以用一个字节表示,字节的最高位为0。4ASCII码表(二进制)高3位低4位0000010100111001011101110000NULDLESP0@P`p0001SOHDC1!1AQaq0010STXDC22BRbr0011ETXDC3#3CScs0100EOTDC4$4DTdt0101ENQNAK%5EUeu0110ACKSYN&6FVfv0111BELETB’7GWgw1000BSCAN(8HXhx1001HTEM)9IYiy1010LFSUB*:JZjz1011VTESC+;K[k{1100FFFS,L\l|1101CRGS-=M]m}1110SORS.N^n~1111SIUS/?O_oDEL基本ASCII码字符的分类显示字符范围为33~126,共94个,指能从键盘输入、可以显示和打印的字符。控制字符范围是0~32和127,共34个,主要用于控制输入、输出设备。5字符ASCII编码十进制值控制字符0000,0000—0001,1111和0111,11110—90011,0000—0011,100148—57A—Z0100,0001—0101,101065—90a—z0110,0001—0110,101097—122符号其余基本ASCII码字符的内容解读基本ASCII码字符内容第0~31号及第127号共33个,为非打印字符,是控制字符或通讯专用字符,如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BEL(振铃)等;通讯专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等。第32~126号共95个可打印字符,其中第33个(32号)为空格,第48~57号为0~9十个阿拉伯数字;65~90号为26个大写英文字母,97~122号为26个小写英文字母,第127个(126号)为“~”,其余为一些标点符号、运算符号等。从键盘上按键输入“CHINA”的字串,传送进计算机的,则是01000011、01001000、01001001、01001110、01000001这五个二进制数字串。比较字符ASCII码值的大小空格<标点符号<数字<大写字母<小写字母十进制数字符号的ASCII码值与其二进制值的区别9ASCII码表示vs.二进制表示int型数10000的表示内存存储形式0010011100010000二进制形式0011000100110000001100000011000000110000ASCII形式文本存储形式10000213+210+29+28+24=8192+1024+512+256+16关于最高位若在该位置1,可表示一些特殊的符号(图形符)由于ASCII码只用了字节的七个位,最高位并不使用,所以后来又将最高的一个位也编入这套编码码中,成为八个位的延伸ASCII(ExtendedASCII)码,这套内码加上了许多外文和表格等特殊符号,成为目前常用的编码。若将传送数据的该位置1,则用于数据传输校验虽然标准ASCII码是7位编码,但由于计算机基本处理单位为字节(1byte=8bit),所以一般仍以一个字节来存放一个ASCII字符。每一个字节中多余出来的一位(最高位)在计算机内部通常保持为0(在数据传输时可用作奇偶校验位)。1011关于数据传输的奇偶校验在计算机的存储单元中,一个ASCII码值占一个字节(8个二进制位),其最高位(b7)用作奇偶校验位。所谓奇偶校验,是指在代码传送过程中用来检验是否出现错误的一种方法,一般分奇校验和偶校验两种。奇校验规定:正确的代码一个字节中1的个数必须是奇数,若非奇数,则在最高位b7添1;偶校验规定:正确的代码一个字节中1的个数必须是偶数,若非偶数,则在最高位b7添1。13ASCII码表基本集(2,10,8,16进制)ASCII码表的扩展集EASCII扩展ASCII编码(ExtendedASCII,延伸美国标准信息交换码)是将基本ASCII码由7位扩充为8位,表示256个字符。基本ASCII码:最高位为0,称为基本ASCII码;扩充的ASCII码:最高位为1,扩充部分编码范围为10000000~11111111,相应的十进制数为128~255用ASCII码组成的文件,称为“文本文件”,其扩展名为.TXT。1415ASCII码表的扩展集16ASCII码表基本集+扩展集(16进制)MicrosoftWindowsIBMPCDOS17二、计算机中中文字符的表示汉字交换码又称“国标码”,即GB2312-1980,是中华人民共和国国家标准汉字交换编码。汉字信息在计算机内部也是以二进制方式存放。由于汉字数量多,用一个字节的128种状态不能全部表示出来,因此在1981年我国颁布的《信息交换用汉字编码字符集—基本集》,即准GB2312-80方案中规定用两个字节的十六位二进制表示一个汉字,每个字节都只使用低7位(与ASCII码相同),即有128×128=16384种状态。18二、计算机中中文字符的表示汉字交换码由于ASCII码的34个控制代码在汉字系统中也要使用,为不致发生冲突,不能作为汉字编码,128除去34只剩94种,所以汉字编码表的大小是94×94=8836,用以表示国标码规定的汉字6763个(一级汉字,是最常用的汉字,按汉语拼音字母顺序排列,共3755个;二级汉字,属于次常用汉字,按偏旁部首的笔划顺序排列,共3008个),数字、字母、符号等682个,共7445个。19二、计算机中中文字符的表示汉字交换码国家标准将每个汉字和图形符号的两个字节分别用两位的十进制编码(不足补0),前字节的编码称为区码,后字节的编码称为位码,排列在一个94行94列的二维代码表中,形成区位码表。如“保”字在二维代码表中处于17区第03位,区位码即为1703D。把区位码按一定的规则转换成的二进制代码叫做信息交换码(简称国标码)。20二、计算机中中文字符的表示汉字交换码国标码并不等于区位码,它是由区位码稍作转换得到,其转换方法为:先将十进制区码和位码转换为十六进制的区码和位码,这样就得了一个与国标码有一个相对位置差(20H)的代码;再将这个代码的第一个字节和第二个字节分别加上20H,就得到国标码。如:“保”字的国标码为(3123)H,它是经过下面的转换得到的:国标码很少直接使用。21GB码简介国标码(GB)是指1981年我国公布的国家标准《信息交换用汉字编码字符集-基本集》,包含:简化汉字,符号,字母,日文假名,共7445个字符;其中包含了6763个汉字,并分作两级:一级为常用字,3755个,按照拼音排序二级为次常用字,3008个,按照部首排序。22GB码的编码空间一个字符的国标码由两个部分组成,分别是该字符的区号和位号。GB码规定共有94个区,每个区中有94个位。编码空间为:94*94=8836个码位1~9区是西文字母、数字、日文假名、图形符号16~87区是汉字区,其中16~55区是一级汉字(40*94-5=3755个)56~87区是二级汉字(32*94=3008个)10~15,88~94区是用户自定义区23GB码区位示例01区78位24GB码区位示例(续)16区12345678917区1234567890啊阿埃挨哎唉哀皑癌0薄雹保堡饱宝抱报暴1蔼矮艾碍爱隘鞍氨安俺1豹鲍爆杯碑悲卑北辈背2按暗岸胺案肮昂盎凹敖2贝钡倍狈备惫焙被奔苯3熬翱袄傲奥懊澳芭捌扒3本笨崩绷甭泵蹦迸逼鼻4叭吧笆八疤巴拔跋靶把4比鄙笔彼碧蓖蔽毕毙毖5耙坝霸罢爸白柏百摆佰5币庇痹闭敝弊必辟壁臂6败拜稗斑班搬扳般颁板6避陛鞭边编贬扁便变卞7版扮拌伴瓣半办绊邦帮7辨辩辫遍标彪膘表鳖憋8梆榜膀绑棒磅蚌镑傍谤8别瘪彬斌濒滨宾摈兵冰9苞胞包褒剥9柄丙秉饼炳25GB码区位示例(续)54区12345678955区1234567890帧症郑证芝枝支吱蜘0住注祝驻抓爪拽专砖1知肢脂汁之织职直植殖1转撰赚篆桩庄装妆撞壮2执值侄址指止趾只旨纸2状椎锥追赘坠缀谆准捉3志挚掷至致置帜峙制智3拙卓桌琢茁酌啄着灼浊4秩稚质炙痔滞治窒中盅4兹咨资姿滋淄孜紫仔籽5忠钟衷终种肿重仲众舟5滓子自渍字鬃棕踪宗综6周州洲诌粥轴肘帚咒皱6总纵邹走奏揍租足卒族7宙昼骤珠株蛛朱猪诸诛7祖诅阻组钻纂嘴醉最罪8逐竹烛煮拄瞩嘱主著柱8尊遵昨左佐柞做作坐座9助蛀贮铸筑926GB码区位示例(续)56区12345678957区1234567890亍丌兀丐廿卅丕亘丞0佟佗伲伽佶佴侑侉侃1鬲孬噩丨禺丿匕乇夭爻1侏佾佻侪佼侬侔俦俨俪2卮氐囟胤馗毓睾鼗丶亟2俅俚俣俜俑俟俸倩偌俳3鼐乜乩亓芈孛啬嘏仄厍3倬倏倮倭俾倜倌倥倨偾4厝厣厥厮靥赝匚叵匦匮4偃偕偈偎偬偻傥傧傩傺5匾赜卦卣刂刈刎刭刳刿5僖儆僭僬僦僮儇儋仝氽6剀剌剞剡剜蒯剽劂劁劐6佘佥俎龠汆籴兮巽黉馘7劓冂罔亻仃仉仂仨仡仫7冁夔勹匍訇匐凫夙兕亠8仞伛仳伢佤仵伥伧伉伫8兖亳衮袤亵脔裒禀嬴蠃9佞佧攸佚佝9羸冫冱冽冼27GB码区位示例(续)86区12345678987区1234567890觥觫觯訾謦靓雩雳雯0鳌鳍鳎鳏鳐鳓鳔鳕鳗1霆霁霈霏霎霪霭霰霾龀1鳘鳙鳜鳝鳟鳢靼鞅鞑鞒2龃龅龆龇龈龉龊龌黾鼋2鞔鞯鞫鞣鞲鞴骱骰骷鹘3鼍隹隼隽雎雒瞿雠銎銮3骶骺骼髁髀髅髂髋髌髑4鋈錾鍪鏊鎏鐾鑫鱿鲂鲅4魅魃魇魉魈魍魑飨餍餮5鲆鲇鲈稣鲋鲎鲐鲑鲒鲔5饕饔髟髡髦髯髫髻髭髹6鲕鲚鲛鲞鲟鲠鲡鲢鲣鲥6鬈鬏鬓鬟鬣麽麾縻麂麇7鲦鲧鲨鲩鲫鲭鲮鲰鲱鲲7麈麋麒鏖麝麟黛黜黝黠8鲳鲴鲵鲶鲷鲺鲻鲼鲽鳄8黟黢黩黧黥黪黯鼢鼬鼯9鳅鳆鳇鳊鳋9鼹鼷鼽鼾齄28二、计算机中中文字符的表示汉字内码就是汉字在计算机内部所使用的编码。当将汉字通过使用外码输入到计算机中后,计算机为了识别汉字,必须将汉字的外码转换为汉字的内码,以便处理和存储汉字信息。在计算机系统中,通常使用两个字节来表示一个汉字的内码。29二、计算机中中文字符的表示汉字内码由于国标码不能直接存储在计算机内,为方便计算机内部处理和存储汉字,又区别于ASCII码,将国标码中的每个字节在最高位改设为1,这样就形成了在计算机内部用来进行汉字的存储、运算的编码叫机内码(或汉字内码,或内码)。内码既与国标码有简单的对应关系,易于转换,又与ASCII码有明显的区别,且有统一的标准(内码是惟一的)。30二、计算机中中文字符的表示汉字内码国标码是汉字信息交换的标准编码,但因其前后字节的最高位为0,与ASCII码发生冲突,如“保”字,国标码为31H和23H(区位码为1103H),而西文字符“1”和“#”的ASCII码也分别为31H和23H。现假如内存中有两个字节为31H和23H,这到底是一个汉字,还是两个西文字符“1”和“#”?于是就出现了二义性。31二、计算机中中文字符的表示汉字内码显然,国标码是不可能在计算机内部直接采用的。于是,汉字的机内码采用变形国标码。其变换方法为:将国标码的每个字节都加上128(80H),即将每个字节的最高位由0改1,其余7位不变。或将区码和位码各加A0H(十进制160)。如:“保”字的国标码为3123H,前字节为00110001B,后字节为00100011B,高位分别改1为1011