微视频:最高效率汉字编码成都发布
人们习惯使用十进制数。但在计算机内部,人们利用程序的形式向计算机发出的指令是通过“0”和“1”两个数码组成的机器语言来实现的。换句话讲,在计算机内部采用的是二进制计数系统。人们只有把习惯使用的各种信息,如文字、字符、数字、图形、图像、光、电、声音、色彩等转换成计算机能够识别的二进制数的编码形式,计算机才能进行处理。
计算机在处理信息时,首先要对输入的十进制数或生活用语或科技用语等信息进行编码,将其转换为计算机能够识别的二进制代码。在计算机中信息常用的编码方法有:数的编码、字符编码(ASCII 码)和汉字编码。
1.计算机中数的编码
在计算机中表示一个数值型数据时,需要指定数的长度、指定数的符号和约定小数点的表示形式。
(1)数的长度
数的长度指用一个十进制数表示一个数值所占用的实际位数。例如19865 的长度为5。由于在计算机中储存容量的大小是用字节来度量的,所以数的长度也常用字节来计量。
(2)数的符号
由于数据有正负之分,在计算机中通常用数的最高位(左边第一位)表示数的正负号,约定用“0”表示正数,用“1”表示负数。
(3)小数点的表示
在计算机中表示数值型数据时,其小数点的位置是隐含的,即约定小数点的位置,这样可以节省存储空间。根据小数点的位置是否固定,数可以分为定点和浮点两种表示方法。
(4)数的编码
计算机科学中把以编码形式表示的一个数,称为“机器数”。机器数有两个特点:
①机器数的位数固定,能表示的数值范围受到位数限制。例如,字长为8 位的计算机能表示的无符号整数的范围为0~255(28-1)。由于机器数受字长的限制,当计算机运算结果超过机器数所能表示的范围,就会产生“溢出(Overflow)”。
②用“0”表示正数,用“1”表示负数。在计算机中通常是把最高位(左边第一位)作为符号位,其余作为数值位。因此,机器数是连同数据符号一起数字化了的数据。机器数所对应的原值称为“真值”。例如,如图2-1-1所示,+79 和-79 可分别表示为:
(+79)10=(01001111)2 (-79)10=(11001111)2
图2-1-1 机器数与数据符号
在计算机中数的符号被数值化后,为了便于对机器数进行算术运算,提高运算速度,人们设计了符号数的各种编码方案,最常见的有原码、反码和补码。
原码——是一种直观的二进制表示形式,是用最高位(左边第一位)表示数值的符号位,其余各位表示该数值的绝对值。其中符号位为0 时,表示该数值为正,符号位为1时,表示该数值为负。
例如,十进制数[+79] 的原码为:01001111。
十进制数[-79] 的原码为:11001111。
但在计算机运算器中,符号位也要参与运算,若用原码表示负数直接参与运算将引起运算结果错误。
例如:-2+3。如果将-2 用二进制原码表示为:(10000010)2;
整数3 用二进制原码表示为:(00000011)2;
运算器相加的结果为:(10000101)2,其结果按原码的表示方法是-5,结果显然错误。
因此,在表示负数的编码时,需要对原码进行修正,计算机内存放的是修正后的编码,称为补码。
反码——是一种中间过渡的编码,是对一个数求反。其中,正数的反码与原码相同;对于负数,反码保持原码的符号位不变,其余各位全部取反。
例如,十进制数[+79] 的原码为:01001111,反码为:01001111。
十进制数[-79] 的原码为:11001111,反码为:10110000。
补码——是计算机中表示有符号数的实际常用编码。
正数的补码与原码相同;对于负数,补码保持原码的符号位不变,其余各位全部取反,然后在反码最低位加1。
例如:十进制数 [ +79] 的原码为:01001111;反码为:01001111;补码为:01001111。
十进制数[-79] 的原码为:11001111;反码为:10110000;补码为:10110001。
2.计算机中字符的编码(ASCII 码)
在计算机中通常把字母、标点符号、特殊符号以及数字符号,通称为“字符”。字符首先要转换成二进制编码形式(如ASCII 码)后,计算机才能对其处理。
ASCII 码(American Standard Code for Information Interchange,美国标准信息交换码)是目前广泛采用的一种字符统一编码方案。ASCII 码分为基本ASCII 码和扩充ASCII码(EASCII 码)。
许多国家采用EASCII 码来表示本国语言字符编码;我国采用两个扩充ASCII 码表示一个汉字,即一个汉字用两个高位为1 的字节表示。
(1)基本ASCII 码
基本ASCII 码用7 位二进制数(或最高位为0 的8 位二进制数)来表示字符。
8 位二进制数中的最高位(左边第一位)用于奇偶校验位,检查信息在传递过程中是否出错。所以,基本ASCII 码采用其余7 位从0~7 位进行编码组合,用7 个二进制位表示一个字符。
0~7 的编码范围为00000000~01111111,相应的十进制数为0~127,共表示128 个字符,包括:
10 个数字——0~9。
52 个英文字母——大写字母A~Z,小写字母a~z。
33 个通用符号字符——(、$、%…
表2-1-1 描述了基本ASCII 码字符。其中十进制值0~31、127 为不可显示、不可打印的控制代码,32~126 为可显示、可打印的字符代码。
一个字符所在列代码的前三位接所在行代码的后四位,就是该字符的ASCII 码。例如,字符“K”的ASCII 码为01001011,字符“k”的ASCII 码为01101011。
利用ASCII 码值可以比较字符的大小。例如,查ASCII 码表可知数字0 的ASCII 码值为十进制数48,字符A 的ASCII 码值为十进制数65,字符a 的ASCII 码值为十进制数97,即小写字母的ASCII 码值比大写字母的ASCII 码值大。各类字符的ASCII 码值大小比较一般有如下规律:
空格<标点符号<数字<大写字母<小写字母
表2-1-1 基本ASCII 码字符集
续表
注:十进制数字符号的ASCII 码值与它的二进制值是有区别的。如十进制数5 的7 位二进制数为(0000101)2,而十进制数字字符“5”的ASCII 码为(0110101)。数值5 表示数值的大小,可参与数值运算;而数字符号“5”只是一个符号,不能参与数值运算。
(2)EASCII 码
EASCII(Extended ASCII,扩充美国标准信息交换码)是将ASCII 码由7 位扩充为8 位。(www.xing528.com)
EASCII 的内码由0~255 共256 个字符组成,可表示28=256 种字符和图形符号。
EASCII 码采用8 个二进制位数表示一个字符,最高位为1,扩充部分编码范围为10000000~11111111,相应的十进制数为128~255。
用ASCII 码组成的文件,称为“文本文件”,其扩展名为“.txt”。
3.计算机中汉字的编码
用计算机处理汉字时,必须先将汉字代码化,即对汉字进行编码。汉字编码通常采用两个高位(左边第一位)为1 的ASCII 码表示一个汉字,即用两个字节表示一个汉字。汉字种类繁多,编码比拼音文字困难,即使在同一汉字处理系统中,输入、内部处理、输出对汉字代码的要求也不尽相同,所以用的代码也不尽相同。汉字在计算机内的编码很复杂,涉及一系列汉字代码转换。下面介绍汉字输入码、汉字机内码、汉字交换码、汉字字形码等。
(1)汉字输入码
汉字输入码又称“外码”,是用户进行汉字输入操作时使用的代码。在计算机系统中是利用西文键盘输入汉字的。由于汉字数以万计,计算机键盘不可能为每一个汉字创造一个按键,因此,必须对每个汉字编制一个西文键盘输入码,用多个键来输入一个汉字。
目前汉字输入法有上千种之多,按照编码规则,汉字输入编码的种类有以下几种:
音码输入——按照汉字读音对声母符号和韵母符号进行编码,其重码率较高。常用的输入法有全拼、搜狗拼音、微软拼音等。
形码输入——根据汉字字形的各部分特性和他们之间的结构特征进行编码。常用的输入法有五笔字型等。
音形码输入——根据汉字的声母、韵母、部首及笔形、字义等结合进行编码。常用的输入法有自然码等。
数字码输入——采用GB2312—80 对汉字和符号编码,使用4 个数字键(0~9)的组合输入汉字、字符、数字、图形符号等。
(2)汉字国标码
“国标码”是国家标准代码的简称,是用于不同的具有汉字处理功能的计算机系统间交换汉字信息时使用的编码。GB2312—1980 是一个简体中文字符集的中国国家标准,由中国国家标准总局发布,1981年5月1日实施。几乎所有的中文系统和国际化的软件都支持GB2312—1980,共收录有一级汉字3755 个、二级汉字3008 个、各种全角中文符号682 个,共计7445 个。由于GB2312—1980 只收录有6763 个汉字,未覆盖繁体中文字、部分人名、方言、古汉语等方面出现的罕用字,所以,中国国家标准总局又发布了基本集的扩充集GB18030—2000 和基本集的繁体字版本GB/T 12345—90 辅助集等汉字标准代码。
西文字符在计算机内部采用一个字节,每个字节用7 位,该字节最高位(b7)是用作奇偶校验,一般置0,如图2-1-2所示。汉字国标码采用两个字节表示一个汉字,每个字节用7 位,最高位(b7)一般置0,如图2-1-3所示。
图2-1-2 西文字符的表示
图2-1-3 汉字的表示
(3)汉字机内码
汉字机内码又称“汉字内码”或“汉字储存码”,是汉字在计算机内部存储、处理和传输用的信息代码。要求它与ASCII 码兼容但又不能相同,以便实现汉字与西文的并存兼容。机内码使得众多不同的汉字外码在计算机内部实现了统一表示,即一个汉字可以有多种输入码,但在计算机内部只有一种储存形式。每个汉字及符号用两个字节表示。第一个字节称为“高位字节”,第二个字节称为“低位字节”。目前我国采用双字节的“变形国标码”作为机内码,最高位置1,以区别于西文字符机内码,如图2-1-4所示。国标码转换为机内码等于国标码加80H。
图2-1-4 汉字机内码的表示
(4)区位码
GB2312—1980 对所收录汉字进行“分区”处理,把汉字或图形符号存放在一个“图形字符代码表”中。
“图形字符代码表”由94 个区组成,每个区含有94 个汉字/符号。这种表示方式也称为区位码。
区的编号为01~94,位的编号为01~94。“位”表示某个汉字在所属“区”中的具体位置。“区”与“位”构成一个二维坐标,一旦找到一个汉字在表中的坐标,就能找到该汉字的编码;或根据一个“区号”和“位号”就可以唯一确定一个汉字或图形符号。例如,“普”字的区位码为“3853”,即位于38 区53 位。
GB2312—1980 中各种图形符号、制表符和汉字的分布如下。
01~09 区——存放各种特殊图形和符号,如:+,-,1.3,∗,$,「,」。
16~55 区——存放一级汉字3755 个,按拼音排序。例如,“啊”字是GB2312—1980中的第一个汉字,它的区位码就是1601。
56~87 区——存放二级汉字3008 个,按部首/笔画排序。
10~15 区和88~94 区——未有编码,用户可以自定义图形符号等。
国标码和区位码是一一对应的。可以这样认为:区位码是十进制表示的国标码,国标码是十六进制表示的区位码。将某个汉字的区码和位码分别转换成十六进制后再分别加20H,即可得到相应的国标码。
(5)汉字字形码
汉字字形码是对汉字的形状进行二进制编码,主要用来显示或打印汉字。汉字是一种方块字,每个字占据同样的空间。汉字包括独体字和合体字。独体字指不能再分割的字,如,“文”“中”等。合体字由基础部件组合而成,如,“话”“汉”等,占汉字的90%以上。
在计算机科学中是使用“点阵”来描述图形符号和汉字形状的。一个汉字可以看作是一个二维图形,把一个汉字离散成若干个网点,每一个网点用一个二进制位表示,从而构成了该汉字的一个点阵。
利用点阵描述一个汉字可以用24×24 点阵表示,每行24 个位(3 字节),共24×3=72 字节;可以用16×16 点阵表示,每行16 个位(2 字节),共16×2=32 字节。
例如,汉字“中”的16×16 点阵的字形及字形编码如图2-1-5所示。
在计算机中汉字字形的集合称为“汉字库”,又叫“汉字字模库”。
图2-1-5 16×16 点阵字形与字形编码
(a)16×16 点阵字形表示;(b)16×16 点阵字形编码表示
汉字库中储存有GB2312—1980 中7445 个汉字和图形等符号。
汉字库又分为显示字库和打印字库。目前微机上使用的汉字库采用点阵模图,并按使用对象不同而建立不同类型的字形。例如,用于显示使用16×16 字库,用于打印使用24×24或48×48 点阵字库,用于印刷排版常用128×128 点阵。点阵越大,所占存储空间越多,分辨率越高,锯齿现象越小,字形越清晰。
(6)国标码、区位码和机内码的关系
具体内容请参看二维码资源。
(7)各种汉字代码之间的转换关系
从汉字代码转换的角度,可以把汉字信息处理系统抽象为一个结构模型。如图2-1-6所示。
国标码、区位码和机内码的关系
图2-1-6 汉字信息处理系统的模型
4.计算机中非字符的编码
具体内容请参看二维码资源。
计算机中非字符的编码
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。