由于計(jì)算機(jī)要處理的數(shù)據(jù)信息十分龐雜,有些數(shù)據(jù)庫所代表的含義又使人難以記憶。為了便于使用,容易記憶,常常要對(duì)加工處理的對(duì)象進(jìn)行編碼,用一個(gè)編碼符合代表一條信息或一串?dāng)?shù)據(jù)。對(duì)數(shù)據(jù)進(jìn)行編碼在計(jì)算機(jī)的管理中非常重要,可以方便地進(jìn)行信息分類、校核、合計(jì)、檢索等操作。因此,數(shù)據(jù)編碼就成為計(jì)算機(jī)處理的關(guān)鍵。即不同的信息記錄應(yīng)當(dāng)采用不同的編碼,一個(gè)碼點(diǎn)可以代表一條信息記錄。人們可以利用編碼來識(shí)別每一個(gè)記錄,區(qū)別處理方法,進(jìn)行分類和校核,從而克服項(xiàng)目參差不齊的缺點(diǎn),節(jié)省存儲(chǔ)空間,提高處理速度。
1.數(shù)字編碼(BCD編碼)
數(shù)字在計(jì)算機(jī)中除了通過進(jìn)制轉(zhuǎn)換為二進(jìn)制外,還有一種比較重要的編碼形式,即BCD碼,BCD是Binary-Coded-Decimal 的縮寫。BCD碼有多重編碼方案,但最常用的是8421碼。它將1位十進(jìn)制數(shù)用4位二進(jìn)制數(shù)來表示,而4位二進(jìn)制數(shù)各位權(quán)值由高到低一次是2³、2²、2¹、2º,即8、4、2、1、,故稱之為8421碼。十進(jìn)制數(shù)與BCD碼的對(duì)應(yīng)關(guān)系如表1.2所示。
注意:BCD碼并不能直接轉(zhuǎn)換成二進(jìn)制,而應(yīng)該先轉(zhuǎn)換成十進(jìn)制,再轉(zhuǎn)換成二進(jìn)制。
2.西文字符編碼
對(duì)于系文字符編碼最常用的是ASCⅡ字符編碼,即American Staddard Code for Information Interchange(美國信息交換標(biāo)準(zhǔn)代碼),已被國際標(biāo)準(zhǔn)化組織(ISO)定為國際標(biāo)準(zhǔn)。
ASCⅡ碼分為標(biāo)準(zhǔn)ASCⅡ碼和擴(kuò)展ASCⅡ碼,兩者的區(qū)別在于用來編碼的位數(shù)不同,前者有7個(gè)二進(jìn)制代碼組成,因此共可以表示2 ,即128個(gè)字符,如表1.3所示。
ASCⅡ碼的每個(gè)字符由7位二進(jìn)制表示,其排列順序?yàn)閐6d5d4d3d2d1d0,其中,d6、d5、d4為高危,d3、d2、d1d0.在計(jì)算機(jī)內(nèi)部,存儲(chǔ)與操作都是以字節(jié)為單位,一個(gè)字節(jié)有8個(gè)位,因此,一個(gè)字符在計(jì)算機(jī)內(nèi)實(shí)際用8位表示。真長情況下,最高以為d7為“0”。在需要奇偶校驗(yàn)時(shí),這意味可用于存放奇偶校驗(yàn)的值,此時(shí)稱這意味為校驗(yàn)位。
我們可以通過查閱ASCⅡ表來確定某個(gè)字符的ASCⅡ碼,方法是在表中找到字符的位置,然后確定它所在位置的列和行,根據(jù)列確定高位碼,根據(jù)行確定低位碼,再將他們合并在一起就是該字符的ASCⅡ碼。如,字母A所在的列碼是100,行所在的碼是0001,那么字母A的ASCⅡ是1000001,轉(zhuǎn)換為十進(jìn)制是65.
ASCⅡ碼是128個(gè)字符組成的字符集。其中編碼值0~31(0000000~0011111)不對(duì)應(yīng)任何可印刷字符,通常稱為控制符,用于計(jì)算機(jī)通信中的通信控制或?qū)τ?jì)算機(jī)設(shè)備的功能控制。編碼值為32(0100000)的死字符SP。編碼指為127(1111111)的是刪除控制DEL碼……其余94個(gè)字符為可印刷字符。
西文字符除了常用的ASCⅡ編碼外,還有另一種EBCDIC(Extended Binaey Coded Decimal Interchange Code,擴(kuò)展的二一十進(jìn)制交換碼)碼。這種字符編碼主要用在大型機(jī)器中。EBCDIC采用8位基2碼表示,有256個(gè)編碼狀態(tài),但是選用其中一部分。
3.漢字編碼
ASCⅡ碼只對(duì)引文字母、數(shù)字和標(biāo)點(diǎn)符號(hào)進(jìn)行了編碼。為了用計(jì)算機(jī)處理漢漢字,同樣需要對(duì)漢子進(jìn)行編碼。由于漢字是象形文字,種類繁多,編碼困難一些,在漢字處理系統(tǒng)中,輸入、內(nèi)部處理、輸出環(huán)節(jié)對(duì)漢字編碼的要求也不盡相同,因此漢字信息處理系統(tǒng)在處理漢字和詞語是,要進(jìn)行一系列的漢字代碼轉(zhuǎn)換。如圖1.4所示。
(1)輸入碼
輸入碼是為將漢字輸入計(jì)算機(jī)而變質(zhì)的代碼,也稱為外碼。目前輸入碼的方案有上百種之多,按照不同的設(shè)計(jì)思想,可分為數(shù)字編碼、拼音編碼、字形編碼、和音形編碼四類,其中最常用的有拼音編碼和字形編碼
①數(shù)字編碼時(shí)用等長的數(shù)字串為漢字注意編號(hào),以這個(gè)編號(hào)作為漢字的輸入碼。
?、谄匆艟幋a時(shí)以漢字的讀音為基礎(chǔ)的輸入法。
?、圩中尉幋a時(shí)以漢字的字形結(jié)構(gòu)為基礎(chǔ)的輸入編碼。
?、芤粜未a是兼顧漢字的讀音和字形的輸入編碼。
(2)交換碼
交換碼用于漢字輸入碼和內(nèi)部碼的交換。1981年,我國頒布了代號(hào)為GB231280《信息交換使用漢字編碼字符集基本集》的漢字編碼字符集,是中文信息處理的國家標(biāo)準(zhǔn),是交換碼的標(biāo)準(zhǔn),所以交換碼也稱為國標(biāo)碼。該標(biāo)準(zhǔn)包含漢字6763個(gè),圖形符號(hào)682個(gè)。
國標(biāo)碼是雙字節(jié)代碼,即用兩個(gè)字節(jié)為漢字編碼,第一個(gè)字節(jié)表示區(qū)碼,第二個(gè)字節(jié)
表示位碼。
(3)內(nèi)部碼
內(nèi)部碼(簡稱內(nèi)碼)是漢字在計(jì)算機(jī)內(nèi)的基本表示形式,是計(jì)算機(jī)機(jī)對(duì)漢字進(jìn)行識(shí)別、存儲(chǔ)、處理和傳輸所用的編碼。
(4)字形碼
字形碼是為了解決漢字的顯示和打印等輸出問題而進(jìn)行的編碼。漢字的字形碼表示漢字字形的字模數(shù)據(jù),又稱漢字字模。字模通常有點(diǎn)陣和矢量兩種漢字字形碼,它是漢字的輸出形式。點(diǎn)陣字模將漢字看作由許多點(diǎn)組成的圖形,這些點(diǎn)構(gòu)成點(diǎn)陣。點(diǎn)陣字形碼使用方便、易于理解,但不同大小的字形需要不同的點(diǎn)陣庫,且字形放大時(shí)容易產(chǎn)生鋸齒狀失真。矢量字形碼用數(shù)學(xué)曲線捕述,字體中包含了符號(hào)邊界卜的關(guān)鍵點(diǎn),連線的導(dǎo)數(shù)信息等。矢量字體的特點(diǎn)是可以無限放大或縮小。