吳迪
摘要:漢字編碼相關(guān)的知識點在湖北省計算機(jī)類技能高考的技能考試中是一個必考的難點。本文從相關(guān)概念出發(fā),研究并總結(jié)了相關(guān)的考點知識。
關(guān)鍵詞:漢字編碼;計算機(jī)技能高考
在湖北省計算機(jī)類技能高考的技能考試中,“計算機(jī)字符編碼”作為一個重要知識點,是每年都會出現(xiàn)的必考題。而作為“計算機(jī)字符編碼”的重點,“漢字編碼”由于其概念繁雜,運算復(fù)雜而讓不少學(xué)生望之生畏。對此,本文將針對這一專題進(jìn)行整理和探討。
一、概念梳理
1、“漢字編碼”的概念
計算機(jī)中漢字的表示也是用二進(jìn)制編碼,漢字編碼(Chinese character encoding)是為漢字設(shè)計的一種便于輸入計算機(jī)的代碼。ASCII碼只對英文字母、數(shù)字和標(biāo)點符號進(jìn)行了編碼,漢字在計算機(jī)中的表示形式統(tǒng)稱為漢字編碼。
2、“漢字編碼”的分類
漢字信息處理系統(tǒng)一般包括編碼、輸入、存儲、編輯、輸出和傳輸。針對這些問題,我們一般將漢字編碼分為四大類:漢字輸入碼、漢字交換碼、漢字內(nèi)碼和漢字字形碼。
(1)漢字輸入碼
輸入碼也叫外碼,是用來將漢字輸入到計算機(jī)中的一組鍵盤符號。常用的輸入碼有拼音碼、五筆字型碼、自然碼和電報碼等。
(2)漢字交換碼
①“國標(biāo)碼”的概念
計算機(jī)內(nèi)部處理的信息是用二進(jìn)制代碼表示的,但二進(jìn)制代碼使用起來不方便,于是需要采用信息交換碼。其中的漢字代碼需要符合國家規(guī)定的交換碼標(biāo)準(zhǔn),這個標(biāo)準(zhǔn)指的是中國標(biāo)準(zhǔn)總局1981年制定了中華人民共和國國家標(biāo)準(zhǔn)GB2312--80《信息交換用漢字編碼字符集--基本集》,也就是所謂的“國標(biāo)碼”。
②“區(qū)位碼”概述
區(qū)位碼是國標(biāo)碼的另一種表現(xiàn)形式。它把國標(biāo)GB2312--80中的漢字、圖形符號組成一個94×94的方陣,分為94個“區(qū)”,每區(qū)包含94個“位”,其中“區(qū)”的序號由01至94,“位”的序號也是從01至94。94個區(qū)中位置總數(shù)=94×94=8836個,其中7445個漢字和圖形字符中的每一個字符占一個位置,還剩下1391個空位保留備用。
(3)漢字內(nèi)碼
當(dāng)計算機(jī)輸入外部碼時,一般都要轉(zhuǎn)換成內(nèi)部碼才能進(jìn)行處理和存儲。內(nèi)部碼是漢字最基本的編碼,通常用其漢字字庫中的物理位置表示。它可以是漢字在字庫中的序號或者是漢字在字庫中的存儲位置,每個字的內(nèi)碼是唯一的。
(4)漢字字形碼
字形碼是漢字的輸出碼,又名字模。輸出漢字時都采用圖形方式,無論漢字的筆畫多少,每個漢字都可以寫在同樣大小的方塊中。漢字字形是指原來鉛字排版漢字的大小和形狀,在計算機(jī)中指組成漢字的點陣。漢字點陣和字形的對應(yīng)關(guān)系是:有筆畫處的點為1,無筆畫處的點為0。漢字的點陣越多,打印字體越美觀。
二、計算問題
1、“漢字編碼”占用的存儲字節(jié)
漢字編碼是用兩個擴(kuò)展的ASCII碼兩兩組合起來的,一個擴(kuò)展的ASCII碼是一個字節(jié),所以漢字編碼是兩個字節(jié)。當(dāng)題目涉及到存儲字節(jié)時,這里的漢字編碼已涉及到在計算機(jī)中內(nèi)部的表示,即漢字的內(nèi)碼。為了區(qū)分,人們將組成漢字編碼的兩個字節(jié)的最高位都改為1,由此可把漢字編碼與擴(kuò)展的ASCII碼區(qū)別開來。
故此,做這類題應(yīng)依照以下結(jié)論解答:微機(jī)中采用的ASCII編碼表示一個英文字符,采用漢字國標(biāo)碼表示一個漢字,存儲一個漢字的內(nèi)碼所需的字節(jié)數(shù)是兩個字節(jié),每個字節(jié)的最高二進(jìn)制位的值分別為1,1。
2、“內(nèi)碼”與“交換碼”間的運算
(1)進(jìn)制問題
由于功用不同,各種內(nèi)碼的原始進(jìn)制并不一致。如果要進(jìn)行運算,先要統(tǒng)一進(jìn)制問題。
區(qū)位碼:4位10進(jìn)制數(shù)(區(qū)碼+位碼)
國標(biāo)碼:4位16進(jìn)制數(shù),(雙字節(jié)編碼,每個字節(jié)最高位為0)
機(jī)內(nèi)碼:4位16進(jìn)制數(shù),(雙字節(jié)編碼,每個字節(jié)最高位為1)
(2)轉(zhuǎn)換方法
①區(qū)位碼轉(zhuǎn)為國標(biāo)碼
國標(biāo)碼是由區(qū)位碼中表示漢字代碼的區(qū)號和位號各加32得到的(十進(jìn)制規(guī)則)
轉(zhuǎn)換公式為:國標(biāo)碼D=區(qū)位碼D+3232D(國標(biāo)碼H=區(qū)位碼H+2020H)
②國標(biāo)碼轉(zhuǎn)為機(jī)內(nèi)碼
漢字的國標(biāo)碼和內(nèi)碼有—一對應(yīng)關(guān)系,即將高位加l,國標(biāo)碼就變?yōu)閮?nèi)碼。故機(jī)內(nèi)碼的計算方式就是將國標(biāo)碼的兩個字節(jié)的最高位由0變成1,其余7位不變(二進(jìn)制規(guī)則)。計算最高位的變換,27=128(十進(jìn)制規(guī)則),轉(zhuǎn)成十六進(jìn)制數(shù)為80(十六進(jìn)制)
轉(zhuǎn)換公式為:機(jī)內(nèi)碼H=國標(biāo)碼H+8080H
如果轉(zhuǎn)換對象換成區(qū)位碼則有:
機(jī)內(nèi)碼H=國標(biāo)碼H+8080H=(區(qū)位碼H+2020H)+8080H=區(qū)位碼H+A0A0H
(3)有效范圍的求法(判斷某編碼是否表示漢字)
①區(qū)位碼值的有效范圍
區(qū)位碼中94行94列二維代碼表示漢字,故其范圍為0101~9494(十進(jìn)制)
計算時需要將區(qū)碼和位碼分開,分別轉(zhuǎn)換為十六進(jìn)制數(shù)。而01D=01H,94D=5EH,故有0101~5E5E(十六進(jìn)制)
②國標(biāo)碼和機(jī)內(nèi)碼值的有效范圍
根據(jù)國標(biāo)碼H=區(qū)位碼H+2020H,得到國標(biāo)碼的有效范圍為2121~7E7E(十六進(jìn)制)
根據(jù)機(jī)內(nèi)碼H=區(qū)位碼H+A0A0H,得到機(jī)內(nèi)碼的有效范圍為A1A1~FEFE(十六進(jìn)制)
3、“字形碼”的運算
在顯示或打印漢字時,還涉及到字形碼。把一個方塊看成m行n列矩陣,共有m×n個點,稱為漢字點陣,一個點用一個二進(jìn)制位表示。漢字的點陣可以對應(yīng)若干字節(jié)長的字形碼,這種表示漢字點陣的方法稱為漢字字形的數(shù)字化表示法。
我們通常用16×16點陣來顯示漢字,一個16×16點陣的字形碼需要16×16=1024bit ,由于1B=8b,故將結(jié)果除以8,得到32 Byte存儲空間。
故在m×n點陣字庫中,每個漢字的字形碼所占字節(jié)的計算公式為:m×n / 8 (字節(jié))
參考文獻(xiàn):
[1]中國漢字編碼研究會.漢字編碼方案匯編[M].北京:科技文獻(xiàn)出版社,1980,3.