輸入碼、區位碼、國標碼與機內碼
輸入碼、區位碼、國標碼與機內碼,這些字對每一位computer fan 來說,可能都不陌生,但其中的聯絡與區別,可能就不那麼清楚了,(筆者作為一名中專電腦教師,經常遇到同學問類似的問題),下面就這問題講述一下,以饗讀者。
我們知道,鍵盤是當前微機的主要輸入裝置,;輸入碼就是使用英文鍵盤輸入漢字時的編碼。目前,我國已推出的輸入碼有數百種,但使用者使用較多的約為十幾種,按輸入碼編碼的主要依據,大體可分為順序碼、音碼、形碼、音形碼四類,如“保”字,用全拼,輸入碼為碼為“BAO”,用區位碼,輸入碼為“1703”,用五筆字型則為“WKS”。
電腦只識別由0、1組成的代碼,ASCII碼是英文資訊處理的標準編碼,漢字資訊處理也必須有一個統一的標準編碼。我國國家標準局於1981年5月頒布了《資訊交換用漢字編碼字元集——基本集》,代號為GB2312-80,共對6763個漢字和682個圖形字元進行了編碼,其編碼原則為:漢字用兩個位元組表示,每個位元組用七位碼(高位為0),;國家標準將漢字和圖形符號排列在一個94行94列的二維代碼錶中,;每兩個位元組分別用兩位十進位編碼,前位元組的編碼稱為區碼,後位元組的編碼稱為位碼,此即區位碼,;如“保”字在二維代碼錶中處於17區第3位,區位碼即為“1703 ”。
國標碼並不等於區位碼,它是由區位碼稍作轉換得到,其轉換方法為:先將十進位區碼和位碼轉換為十六進位的區碼和位碼,;這樣就得了一個與國標碼有一個相對位置差的代碼,;再將這個代碼的第一個位元組和第二個位元組分別加上20H,就得到國標碼。如:“保”字的國標碼為3123H,它是經過下面的轉換得到的:1703D->1103H->+20H->3123H。
國標碼是漢字資訊交換的標準編碼,但因其前後位元組的最高位為0,與ASCII碼發生衝突,如“保”字,國標碼為31H和23H,而西文字元“1”和“#”的SCII也為31H和23H,現假如記憶體中有兩個位元組為31H和23H,;這到底是一個漢字,還是兩個西文字元“1”;和“#”?於是就出現了二義性,顯然,國標碼是不可能在電腦內部直接採用的,於是,;漢字的機內碼採用變形國標碼,其變換方法為:將國標碼的每個位元組都加上128,即將兩個位元組的最高位由0改1,其餘7位不變,如:由上面我們知道,“保”字的國標碼為3123H,前位元組為00110001B,後位元組為00100011B,高位改1為10110001B和10100011B 即為B1A3H,因此,字的機內碼就是B1A3H;。
顯然,漢字機內碼的每個位元組都大於128,這就解決了與西文字元的ASCII碼衝突的問題。
如上所述,漢字輸入碼、區位碼、;國標碼與機內碼都是漢字的編碼形式,它們之間有著千絲萬縷的聯絡,但其間的區別也是不容忽視的。
原文:http://zhidao.baidu.com/question/12105498.html