编码简介
在显示器上看见的文字、图片等信息在电脑里面其实并不是我们看见的样子,即使你知道所有信息都存储在硬盘里,把它拆开也看不见里面有任何东西,只有些盘片。假设,你用显微镜把盘片放大,会看见盘片表面凹凸不平,凸起的地方被磁化,凹的地方是没有被磁化;凸起的地方代表数字1,凹的地方代表数字0。硬盘只能用0和1来表示所有文字、图片等信息。那么字母”A”在硬盘上是如何存储的呢?可能小张计算机存储字母”A”是1100001,而小王存储字母”A”是11000010,这样双方交换信息时就会误解。比如小张把1100001发送给小王,小王并不认为1100001是字母”A”,可能认为这是字母”X”,于是小王在用记事本访问存储在硬盘上的1100001时,在屏幕上显示的就是字母”X”。也就是说,小张和小王使用了不同的编码表。小张用的编码表是ASCII,ASCII编码表把26个字母都一一的对应到2进制1和0上;小王用的编码表可能是EBCDIC,只不过EBCDIC编码与ASCII编码ψ的字母和01的对应关系不同。一般地说,开放的操作系统(LINUX、WINDOWS等)采用ASCII编码,而大型主机系统(MVS、OS/390等)采用EBCDIC编码。在发送数据给对方前,需要事先告知对方自己所使用的编码,或者通过转码,使不同编码方案的两个系统可沟通自如。
ASCII码使用7位2进制数表示一个字符,7位2进制数可以表示出2的7次方个字符,共128个字符。EBCDIC码使用8位,可以表示出2的8次方个字符,256个字符。
无论是ASCII码还是EBCDIC码,都无法对拥有几万个的汉字进行编码。因为上面已经提过,7位2进制数最多对应上128个字符,8位最多对应上256个字符。1
英文字母编码方案直观编码由A到Z依次可编码,如图所示。2
阵列编码由A到Z依次可编码,如图所示。2
二进编码ψ(Ω)=111111111111111111111111111111111
ψ(A)=0000010010001001101010000101000001
ψ(B)=0100100010010001010010001001000101
ψ(C)=1010100001010000000010000001000111
ψ(D)=0100100010010000100010001001000101
ψ(E)=1010100000010000101010000001000011
ψ(F)=1010100000010000101010000001000000
ψ(G)=101000001010000001010000101000111
ψ(H)=0000100001010001101010000101000100
ψ(I)=0000000100000010000000010000100000
ψ(J)=0000000100000010000000010000001001
ψ(K)=000100100010000000101000010010000
ψ(L)=0000100000010000000010000001000001
ψ(M)=0001010101101010010010000101000001
ψ(N)=0001010010100100010010010101000101
ψ(O)=0100100100010010000010010001001011
ψ(P)=0100100100010010010010000001000000
ψ(Q)=0000010010001000100001010100101010
ψ(R)=0100100010010001010010001001000010
ψ(S)=0100100100010000001000010001001001
ψ(T)=0101000100000010000000010000001000
ψ(U)=0000100001010000010010000101000111
ψ(V)=0000100010100000010001000100100100
ψ(W)=0000100001010000010101011010100101
ψ(X)=0000010001001001000001001000100010
ψ(Y)=0000010001001001000000010000001000
ψ(z)=010100000100000100000010000010002
绝对码重由A到Z依次可编码,如图所示。2
相对码重由A到Z依次可编码,如图所示。2
中文字母编码汉字编码史汉字编码回溯到我国东汉时期,许慎首创部首编排法,将9353个汉字划分为540部,编出我国第一部系统分析汉字字形的字典《说文解字》。由于这种编排法揭示了汉字复杂的内部结构,因而流传至今。现在出版的有些字典只不过将部首略作删改,如《新华字典》改为189部,《现代汉语词典》改为188部。然而,部首编排法查字速度太慢,更谈不上见字识码。原商务印书馆长王云五创四角号码检字法,第一次解决了“见字识码”的问题。这种编码法现在仍是权威性的编码法之一,除了《四角号码新词典》采用以外,《现代汉语词典》在书前,新版《辞源》在书后均附有四角号码检字表。不过,这种编码的重码率太高,不能满足电子计算机的要求。
要知道,造成重码的原因是多方面的。就以“王”、“豆”两字的编码为例,它们的编码都是1010,造成同码的原因为:(1)四角号码法只考虑了汉字四角的特点,而忽略了汉字的内部结构。然而,“王”与“豆”的根本区别正是在内部。(2)对这两字名义上是取四角,但所取的角中只有左上、左下两角生效。3
树形编码从以上对汉字编码史的回顾,我们得出如下结论:只有抓住汉字字形复杂的内部结构这一根本点,才可能得出先进的编码方案。“汉字树形结构中文字母编码法”(简称“树”法)正是在总结我国编码史的基础上提出来的。它以汉字结构文法及其语法树为理论基础,直接将三十六对中文字母(从数万汉字中提炼出,每对中文字母只对应一个数字或一个英文字母)作为汉字的编码,并共用现成的英文键盘。
象物质由分子组成一样,汉字由几个小块复合而成。这些构字小块简称块。块的形状多样,有矩形、三角形、凹多边形诸种。块内笔划之间相互关系错综复杂。那些笔划之间纵横相交或相连的块,如“丰”、“王”、“艺”……都是交连块。笔划分离的块如“甲”、“三”、“立,.··…等都是离散块。块内有块的那些块如“国”,“田”……是相套块。块与块彼此相嵌的块,如“臾”是相嵌块。上述这些块合称分块。
对数万汉字进行分解的结果,从中提炼出三十六对字符,作为中文字母。中文字母成对出现,每对字母对应一个数字或一个英文字母。换言之,每对中文字母对应于同一个ASClI码。中文字母分成两类,甲类为三十六个常用符号,乙类为三十六个大容量的偏旁部首,且为汉字,如“木,之”等。对《新华字典》71年修订重排本“部容量”作了一个统计。该字典收字8500左右,将汉字分为189部,在中文字母中所出现的偏旁部首总容量为7955字,占整个字典总容量的93.59%。这说明中文字母具有极强的构字能力。甲类符号又分为四区。
如果一汉字不是分块,那么对它进行树形结构的一级分解。设LEAE(CW)={B1,B2,…BN},这里N=2,3,4,5
1.1若N=2,对B1、B2分别进行二级分解,限分两块。转3.
1.2若N>3,转3。
2.如果一汉字是一分块,那么对它进行二级分解。
3.取每块为首的最大字母为其编码。
“树”法方法简明,不用记忆,识码高速。不管是哪一个国家的人,只要他能正确书写汉字,就能按书写分块的先后次序,对汉字进行树形结构的一级分解并进行编码,其速度不低于书写一个英文字的速度。
树”法平均码长短且重码率低。“树”法不局限于对汉字几个“角”的了解,它对汉字进行了层层剖析,将汉字分解为分块,又将分块继续分解为原子块,深刻地揭示了汉字复杂的内部结构。因而,收到了平均码长短且重码率低的效果。以一九八二年五月出版的《快速集中识字手册》的六千多汉字为例,重码率仅0.3%,平均码长2.5。
“树”法对高频汉字以及大容量部首都进行了巧妙安排。而且高频汉字的编码直接由“树”法规则决定,且编码长度短,不必另设简码表。前20个高频汉字的平均码长仅1.75。3