計算機只識別由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;。