admin管理员组

文章数量:1533913

2024年3月31日发(作者:)

汉字的内码和区位码与显示汉字原理

汉字的内码和区位码

在计算机中英文字符是用一个字节的ASCII码表示,该字节最高位一般置0或用做奇

偶校验,故实际是用7位码来代表128个字符的,但对于众多的汉字,只有用两个字节才

能代表,这样用两个字节代表一个汉字的代码体制,国家制定了统一标准,称为国标码。

国标码规定,组成两字节代码的最高位为0,即每个字节仅只使用7位,这样在机器

内使用时,由于英文的ASCII码也在使用,可能将国标码看成两个ASCII码,因而规定用

国标码在机内表示汉字时,将每个字节的最高位置1,以表示该码表示的是汉字,这些国

标码两字节最高位加1后的代码称为机器内的汉字代码,简称 内码。

国家标准的 汉字字符集(GB2312-80)在汉字操作系统中是以汉字库的形式提供的。

汉字库结构作了统一规定,即将 字库分成94个区,每个区有94个汉字(以位做区别),

每一个汉字在汉字库中有确定的区和位编号(用两个字节),就是所谓的 区位码,区位

码的第一个字节表示区号,第二个字节表示位号,只要知道了区位码,就可知道该汉字在

字库中的地址。

当我们用某种输入设备例如键盘将汉字输入计算机时,管理模块将自动的把键盘输入

的汉字转换为内码。当要显示该汉字时,再由内码转换成区位码,在汉字库找到该汉字,

进行显示。如“哈”的区位码为2594,它表示该字字模在字符集的第25个区的第94个

位置。

每个汉字在字库中是以点阵形式存储的,常采用 12×12、16×16、24×24、48×48

点阵形式,同英文字模一样,每个点用一个二进制bit位表示,bit=1的点,当显示时,

就可以在屏上显示一个点,bit=0的点,则在屏上不显示,这样把存某字的点阵信息直接

用来在显示器上按上述原则显示,将出现对应的汉字。 最常用的汉字是16×16点阵,它

是由行、列各16个点,共256个点组成的点阵图案,每行的16个点在内存中占二个字节,

一个16×16点阵汉字共16行,在内存中占32个字节。

根据这些字节在字膜中存放的顺序,第一行的第一个字节我们称“0”号字节,第二

个字节我们称“1”号字节;第二行的第一个字节我们称“2”号字节,第二个字节我们

称“3”号字节。以此类推,最后一行的第一个字节我们称“30”号字节,第二个字节我

们称“31”号字节,每个字节高位在前,低位在后,即D7在一个字节的最左侧,D0在

最右侧。具体如图3-3所示:

如我们要在屏幕的X行Y列位置显示上面的“哈”字,则可以从点(X,Y)开始将0号

字节和1号字节的内容输出到屏幕上;然后行加1,列再回到,输出2号字节和3号字

节,依此类推16个循环即可完成一个汉字的显示. 输出一个字节数据时,该字节中“位”

(bit)为1时在该“位”位置打点,为0时该“位”位置打空白。

此外常用的汉字还有24×24点阵,它是由行列各24个点组成的点阵图案,它每列的

24个点在内存中占三个字节,一个24×24点阵汉字共24列,在内存中占72个字节;48×48

点阵,行×列为48×48,一个汉字占内存288个字节。12×12点阵(为方便编程把列12

点扩展为16点,既二个字节)行×列为12×16,一个汉字占内存24个字节。

GB2312-80中, 94个区中除6763个汉字外,第3~7区给这些符号留下了位置,

如第3区为英文大小写符号、第4区为日文平假名、第5区为日文片假名、第6区为大小

写希腊字母、第7区为大小写俄罗斯字母。这些字符每一个都有固定的区位码,当然也都

有一个固定的内码。当用某种输入法输入一个西文字符时,在计算机中是用内码表示的,

显示时通过内码计算出区位码,找到该字符字模进行显示。其中英文字符比较特殊,在西

文操作系统中,如上所述,它是以ASCII码存储的,而在汉字操作系统中,它是做为一个

汉字,以内码方式存储。

本文标签: 字节显示区位码点阵内码