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