区位码、国标码、机内码的区别和内在机制

一、区位码:

为了使每一个汉字有一个全国统一的代码,1980年,我国颁布了第一个汉字编码的国家标准: GB2312-80信息交换用汉字编码字符集》基本集,这个字符集是我国中文信息处理技术的发展基础,也是目前国内所有汉字系统的统一标准。由于国标码是四位十六进制,为了便于交流,大家常用的是四位十进制的区位码。所有的国标汉字与符号组成一个94×94的矩阵。在此方阵中,每一行称为一个"区",每一列称为一个"位",因此,这个方阵实际上组成了一个有94个区(区号分别为0 1到94)、每个区内有94个位(位号分别为01到94)的汉字字符集。一个汉字所在的区号和位号简单地组合在一起就构成了该汉字的"区位码"。在汉字的区位码中,高两位为区号,低两位为位号。 在区位码中,01-09区为682个特殊字符,16~87区为汉字区,包含6763个汉字 。其中16-55区为一级汉字(3755个最常用的汉字,按拼音字母的次序排列),56-87区为二级汉字(3008个汉字,按部首次序排列)。


二、国标码:

国标码,它是由区位码稍作转换得到,其转换方法为:先将十进制区码和位码转换为十六进制的区码和位码。这样就得了一个与国标码有一个相对位置差的代码。再将这个代码的第一个字节和第二个字节分别加上20H,就得到国标码。

汉字国标码的范围用二进制表示是:00100001(33) 00100001(33)到01111110(126) 01111110(126) (括号中为十进制数), 7 位ASCII码是128个字符组成的字符集。其中编码值 0到31(00000000到00011111)对应不可印刷字符,通常称作“控制符”,用于计算机通信中的通信控制或对计算机设备的功能控制。编码值32(00100000)是空格字符SP,编码值127(01111111)是删除字符DEL。

 
汉字国标码的起始二进制位置选择00100001(33)是为了跳过ASCII码中前32个控制字符和空格字符SP,终止二进制位置选择01111110(126)是为了跳过ASCII码中最后1个删除字符DEL。因此,汉字国标码的高位和低位分别比对应的区位码大32(十进制数)或00100000(二进制数)或20H(十六进制数),即: 国标码高位 = 区码 + 20H(H表示十六进制),国标码低位 = 位码 + 20H。 


三、机内码:

汉字在计算机内部其内码是唯一的。因为汉字处理系统要保证中西文的兼容,当系统中同时存在ASCII码和汉字国标码时,将会产生二义性。例如:有两个字节的内容为30H和21H,它既可表示汉字“啊”的国标码,又可表示西文“0”和“!”的ASCII码。为此,汉字机内码对应国标码加以适当处理和变换。
国标码的机内码为二进制长的代码,它是在相应国标码的每个字节最高位上加“1”,即
汉字机内码=汉字国标码+8080H(1000000010000000)
汉字机内码=区位码+A0A0H

扫描二维码关注公众号,回复: 3340335 查看本文章

四、常用汉字机内码:

因为常用汉字区位码是从16区开始的,所以其机内码即从B0A0H开始(10H+A0H=B0H),到D7F9结束。又由于每个区的开始和结束都是空格,所以位码不能为A0H和FFH。



猜你喜欢

转载自blog.csdn.net/lxpblsc/article/details/9619295
今日推荐