码制
每个国家(或区域)都规定了计算机信息交换用的字符编码集,如美国的扩展 ASCII码, 中国的 GB2312-80,日本的 JIS 等, 我国香港,台湾等地采用的是BIG5码作为该国家/区域内信息处理的基础,有着统一编码的重要作用
什么叫ASCII码?
计算机中用二进制数表示字母、数字、符号以及控制符号,目前主要用ASCII码(美国标准信息交换码的缩写)。
1)常用字符有128个,编码从0到127。
2)控制字符:0~31、127,共33个,不可显示;
3)普通字符:95个,包括10个阿拉伯数字、52个英文大小写字母、33个运算符。
4)每个字符占一个字节,7位,最高位为0。
常见ASCII码的大小规则,0-9<A-Z<a-z:
1)数字比字母要小。如 “7”<“F”
2)数字0比数字9要小,并按0到9顺序递增。如 “3”<“8”
3)字母A比字母Z要小,并按A到Z顺序递增。如“A”<“Z”
4)同个字母的大写字母比小写字母要小32。如“A”<“a”
记住几个常见字母的ASCII码大小:
“A”为65;“a”为97;“0”为48;
2、ASCII码表如下:
字符 |
范围 |
|
十六进制 |
十进制 |
|
空格 |
20H |
32 |
0~9 |
30H~39H |
48~57 |
A~Z |
41H~5AH |
65~90 |
a~z |
61H~7AH |
97~122 |
汉字编码
1、汉字编码分类汉字在不同的处理阶段有不同的编码。
(1)汉字的输入:输入码
(2)汉字的机内表示:机内码
(3)汉字的输出:字形码(字库 Font)
汉字的输出:字形码(字库 Font)
(1)点阵字形: 1616、24×24、48×48
(2)轮廓字形:字笔画的轮廓用一组直线和曲线勾画。记录的是这些几何形状之间的关系。精度高。Windows的TrueType字库采用此法。
计算机只识别由0、1组成的代码,ASCII码是英文信息处理的标准编码,汉字信息处理也必须有一个统一的标准编码。我国国家标准局于1981年5月颁布了《信息交换用汉字编码字符集——基本集》,代号为GB2312-80,共对6763个汉字和682个图形字符进行了编码,其编码原则为:汉字用两个字节表示,每个字节用七位码(高位为0),国家标准将汉字和图形符号排列在一个94行94列的二维代码表中,每两个字节分别用两位十进制编码,前字节的编码称为区码,后字节的编码称为位码,此即区位码,;如“保”字在二维代码表中处于17区第3位,区位码即为“1703 ”。
区位码、国标码与机内码的转换关系
所有的国标汉字与符号组成一个94×94的矩阵.在此方阵中,每一行称为一个“区”,每一列称为一个“位”,因此,这个方阵实际上组成了一个有94个区(区号分别为0 1到94)、每个区内有94个位(位号分别为01到94)的汉字字符集.
一个汉字所在的区号和位号简单地组合在一起就构成了该汉字的“区位码”.
国标码并不等于区位码,它是由区位码稍作转换得到,其转换方法为:先将十进制区码和位码转换为十六进制的区码和位码,这样就得了一个与国标码有一个相对位置差的代码,再将这个代码的第一个字节和第二个字节分别加上20H,就得到国标码。((1)区位码先转换成十六进制数表示(2)(区位码的十六进制表示)+2020H=国标码;(3)国标码+8080H=机内码)如:“保”字的国标码为3123H,它是经过下面的转换得到的:1703D->1103H->+20H->3123H。6763个常用汉字根据其使用的频繁程度又分成两个等级.使用频率高的为一级,包括3755个,它覆盖了文字文件中常用字的99%;二级汉字有3008个.二者合计覆盖了文字文件的99.99%.
举例:以汉字“大”为例,“大”字的区内码为2083
解:1、区号为20,位号为83
2、将区位号2083转换为十六进制表示为1453H
3、1453H+2020H=3473H,得到国标码3473H
4、3473H+8080H=B4F3H,得到机内码为B4F3H
三、
国标码是汉字信息交换的标准编码,但因其前后字节的最高位为0,与ASCII码发生冲突,如“保”字,国标码为31H和23H,而西文字符“1”和“#”的SCII也为31H和23H,现假如内存中有两个字节为31H和23H,;这到底是一个汉字,还是两个西文字符“1”;和“#”?于是就出现了二义性,显然,国标码是不可能在计算机内部直接采用的,于是,汉字的机内码采用变形国标码,其变换方法为:将国标码的每个字节都加上128,即将两个字节的最高位由0改1,其余7位不变,如:由上面我们知道,“保”字的国标码为3123H,前字节为00110001B,后字节为00100011B,高位改1为10110001B和10100011B
即为B1A3H,因此,字的机内码就是B1A3H。 显然,汉字机内码的每个字节都大于128,这就解决了与西文字符的ASCII码冲突的问题。