機內碼

機內碼

國家標準局頒布的《信息交換用漢字編碼字元集基本集》(代號為GB2312 80)規定的漢字交換碼作為國家標準漢字編碼。

基本介紹

  • 中文名:機內碼
  • 外文名:Machine code
  • 別名:內碼
  • 使用依據:GB2312 80
  • 頒布機構:國家標準局
簡介,詳情,

簡介

輸入碼、區位碼、國標碼與機內碼
機內碼是漢字在計算機內部存儲、傳送、交換的內部編碼。

詳情

國家標準局頒布的《信息交換用漢字編碼字元集基本集》(代號為GB2312 80)規定的漢字交換碼作為國家標準漢字編碼。 GB2312 80中共有7445個字元符號: 漢字元號6763個 一級漢字3755個(按漢語拼音字母順序排列) 二級漢字3008個(按部首筆劃順序排列) 非漢字元號682個 GB2312 80規定,我們知道,鍵盤是當前微機的主要輸入設備,輸入碼就是使用英文鍵盤輸入漢字時的編碼。目前,我國已推出的輸入碼有數百種,但用戶使用較多的約為十幾種,按輸入碼編碼的主要依據,大體可分為順序碼、音碼、形碼、音形碼四類,如“保”字,用全拼,輸入碼為“BAO”,用區位碼,輸入碼為“1703”,用五筆字型則為“WKS”。
計算機只識別由0、1組成的代碼,ASCII碼是英文信息處理的標準編碼,漢字信息處理也必須有一個統一的標準編碼。 漢字交換碼(國標碼)主要用於漢字信息交換,我國國家標準局於1981年5月頒布了《信息交換用漢字編碼字元集——基本集》,代號為GB2312-80,共對6763個漢字和682個圖形字元進行了編碼,其編碼原則為:漢字用兩個位元組表示,原則上,兩個位元組可以表示 256×256=65536 種不同的符號,作為漢字編碼表示的基礎是可行的。但考慮到漢字編碼與其它國際通用編碼,如ASCII 西文字元編碼的關係,我國國家標準局採用了加以修正的兩位元組漢字編碼方案,只用了兩個位元組的低7位。這個方案可以容納 128×128=16384 種不同的漢字,但為了與標準ASCII碼兼容,每個位元組中都不能再用32個控制功能碼和碼值為32的空格以及127的操作碼。所以每個位元組只能有94個編碼。這樣,雙七位實際能夠表示的字數是:94×94=8836個。
所有的國標碼漢字及符號組成一個94行94列的二維代碼表。在此方陣中,每一行稱為一個"區",每一列稱為一個"位"。這個方陣實際上組成一個有94個區(編號由01到94),每個區有94個位(編號由01到94)的漢字字元集。每個位元組分別用兩位十進制編碼,前位元組的編碼稱為區碼,後位元組的編碼稱為位碼,此即區位碼,其中,高兩位為區號,低兩位為位號。這樣區位碼可以唯一地確定某一漢字或字元;反之,任何一個漢字或符號都對應一個唯一的區位碼,沒有重碼。如“保”字在二維代碼表中處於17區第3位,區位碼即為“1703 ”。
國標碼並不等於區位碼,它是由區位碼稍作轉換得到,其轉換方法為:先將十進制區碼和位碼轉換為十六進制的區碼和位碼,;這樣就得了一個與國標碼有一個相對位置差的代碼,再將這個代碼的第一個位元組和第二個位元組分別加上20H,就得到國標碼。如:“保”字的國標碼為3123H,它是經過下面的轉換得到的:1703D->1103H->+20H->3123H。 (20h就是十進制的32,上文提到了“但為了與標準ASCII碼兼容,每個位元組中都不能再用32個控制功能碼和碼值為32的空格以及127的操作碼”)
國標碼是漢字信息交換的標準編碼,但因其前後位元組的最高位為0,與ASCII碼發生衝突,如“保”字,國標碼為31H和23H,而西文字元“1”和“#”的ASCII也為31H和23H,現假如記憶體中有兩個位元組為31H和23H,這到底是一個漢字?還是兩個西文字元“1”和“#”於是就出現了二義性,顯然,國標碼是不可能在計算機內部直接採用的,於是,漢字的機內碼採用變形國標碼,其變換方法為:將國標碼的每個位元組都加上128,即將兩個位元組的最高位由0改1,其餘7位不變,如:由上面我們知道,“保”字的國標碼為3123H,前位元組為00110001B,後位元組為00100011B,高位改1為10110001B和10100011B 即為B1A3H,因此,“保”字的機內碼就是B1A3H。
顯然,漢字機內碼的每個位元組都大於128,這就解決了與西文字元的ASCII碼衝突的問題。
如上所述,漢字輸入碼、區位碼、國標碼與機內碼都是漢字的編碼形式,它們之間有著千絲萬縷的聯繫,但其間的區別也是不容忽視的。

相關詞條

熱門詞條

聯絡我們