在計算機中,各種信息都是以二進制編碼的形式存在的;也就是說,不管是文字、圖形、聲音、動畫,還是電影等各種信息,在計算機中都是以0和1組成的二進制代碼表示的;計算機之所以能區別這些信息的不同,是因為它們采用的編碼規則不同.比如:同樣是文字,英文字母與漢字的編碼規則就不同,英文字母用的是單字節的ASCII碼,漢字采用的是雙字節的漢字內碼;但隨著需求的變化,這兩種編碼有被統壹的UNICODE碼(由Unicode 協會開發的能表示幾乎世界上所有書寫語言的字符編碼標準)所取代的趨勢;當然圖形、聲音等的編碼就更復雜多樣了.這也就告訴我們,信息在計算機中的二進制編碼是壹個不斷發展的、高深的、跨學科的知識領域.
1、字符(英文,包括字母、數字、標點、運算符等)編碼
字符的編碼采用國際通用的ASCII碼(American Standard Code for Information Interchange,美國信息交換標準代碼),每個ASCII碼以1個字節(Byte)儲存,從0到數字127代表不同的常用符號,例如大寫A的ASCII碼是65,小寫a則是97.由於ASCII碼只用了字節的七個位,最高位並不使用,所以後來又將最高的壹個位也編入這套編碼碼中,成為八個位的延伸ASCII(ExtendedASCII)碼,這套內碼加上了許多外文和表格等特殊符號,成為目前常用的編碼.基本的ASCII字符集***有128個字符,其中有96個可打印字符,包括常用的字母、數字、標點符號等,另外還有32個控制字符.標準ASCII碼使用7個二進位對字符進行編碼,對應的ISO標準為ISO646標準.下表展示了基本ASCII字符集及其編碼:
字母和數字的ASCII碼的記憶是非常簡單的.我們只要記住了壹個字母或數字的ASCII碼(例如記住A為65,0的ASCII碼為48),知道相應的大小寫字母之間差32,就可以推算出其余字母、數字的ASCII碼.
雖然標準ASCII碼是7位編碼,但由於計算機基本處理單位為字節(1byte = 8bit),所以壹般仍以壹個字節來存放壹個ASCII字符.每壹個字節中多余出來的壹位(最高位)在計算機內部通常保持為0(在數據傳輸時可用作奇偶校驗位).由於標準ASCII字符集字符數目有限,在實際應用中往往無法滿足要求.為此,國際標準化組織又制定了ISO2022標準,它規定了在保持與ISO646兼容的前提下將ASCII字符集擴充為8位代碼的統壹方法.ISO陸續制定了壹批適用於不同地區的擴充ASCII字符集,每種擴充ASCII字符集分別可以擴充128個字符,這些擴充字符的編碼均為高位為1的8位代碼(即十進制數128~255),稱為擴展ASCII碼.下表展示的是最流行的壹套擴展ASCII字符集和編碼:
2、漢字的編碼
(1)漢字內碼
漢字信息在計算機內部也是以二進制方式存放.由於漢字數量多,用壹個字節的128種狀態不能全部表示出來,因此在1980年我國頒布的《信息交換用漢字編碼字符集——基本集》,即國家標準GB2312-80方案中規定用兩個字節的十六位二進制表示壹個漢字,每個字節都只使用低7位(與ASCII碼相同),即有128×128=16384種狀態.由於ASCII碼的34個控制代碼在漢字系統中也要使用,為不致發生沖突,不能作為漢字編碼,128除去34只剩94種,所以漢字編碼表的大小是94×94=8836,用以表示國標碼規定的7445個漢字和圖形符號.
每個漢字或圖形符號分別用兩位的十進制區碼(行碼)和兩位的十進制位碼(列碼)表示,不足的地方補0,組合起來就是區位碼.把區位碼按壹定的規則轉換成的二進制代碼叫做信息交換碼(簡稱國標碼).國標碼***有漢字6763個(壹級漢字,是最常用的漢字,按漢語拼音字母順序排列,***3755個;二級漢字,屬於次常用漢字,按偏旁部首的筆劃順序排列,***3008個),數字、字母、符號等682個,***7445個.
由於國標碼不能直接存儲在計算機內,為方便計算機內部處理和存儲漢字,又區別於ASCII碼,將國標碼中的每個字節在最高位改設為1,這樣就形成了在計算機內部用來進行漢字的存儲、運算的編碼叫機內碼(或漢字內碼,或內碼).內碼既與國標碼有簡單的對應關系,易於轉換,又與ASCII碼有明顯的區別,且有統壹的標準(內碼是惟壹的).
(2)漢字外碼
無論是區位碼或國標碼都不利於輸入漢字,為方便漢字的輸入而制定的漢字編碼,稱為漢字輸入碼.漢字輸入碼屬於外碼.不同的輸入方法,形成了不同的漢字外碼.常見的輸入法有以下幾類:
按漢字的排列順序形成的編碼(流水碼):如區位碼;
按漢字的讀音形成的編碼(音碼):如全拼、簡拼、雙拼等;
按漢字的字形形成的編碼(形碼):如五筆字型、鄭碼等;
按漢字的音、形結合形成的編碼(音形碼):如自然碼、智能ABC.
輸入碼在計算機中必須轉換成機內碼,才能進行存儲和處理.
(3)漢字字形碼
為了將漢字在顯示器或打印機上輸出,把漢字按圖形符號設計成點陣圖,就得到了相應的點陣代碼(字形碼).
全部漢字字碼的 *** 叫漢字字庫.漢字庫可分為軟字庫和硬字庫.軟字庫以文件的形式存放在硬盤上,現多用這種方式,硬字庫則將字庫固化在壹個單獨的存儲芯片中,再和其它必要的器件組成接口卡,插接在計算機上,通常稱為漢卡.
用於顯示的字庫叫顯示字庫.顯示壹個漢字壹般采用16×16點陣或24×24點陣或48×48點陣.已知漢字點陣的大小,可以計算出存儲壹個漢字所需占用的字節空間.例:用16×16點陣表示壹個漢字,就是將每個漢字用16行,每行16個點表示,壹個點需要1位二進制代碼,16個點需用16位二進制代碼(即2個字節),***16行,所以需要16行×2字節/行=32字節,即16×16點陣表示壹個漢字,字形碼需用32字節.
即:字節數=點陣行數×點陣列數/8
用於打印的字庫叫打印字庫,其中的漢字比顯示字庫多,而且工作時也不像顯示字庫需調入內存.
可以這樣理解,為在計算機內表示漢字而統壹的編碼方式形成漢字編碼叫內碼(如國標碼),內碼是惟壹的.為方便漢字輸入而形成的漢字編碼為輸入碼,屬於漢字的外碼,輸入碼因編碼方式不同而不同,是多種多樣的.為顯示和打印輸出漢字而形成的漢字編碼為字形碼,計算機通過漢字內碼在字模庫中找出漢字的字形碼,實現其轉換.
例1:已知漢字"春"的國標碼為343AH,求其機內碼?
機內碼=國標碼+8080H=343AH+8080H=B4BAH
例2:用24×24點陣來表示壹個漢字(壹點為壹個二進制位),則2000個漢字需要多少KB容量?
(24×24/8)×2000/1024=140.7KB≈141KB,5,