具體解釋
因為漢字處理系統要保證中西文的兼容,當系統中同時存在ASCII碼和漢字國標碼時,將會產生二義性。例如:有兩個位元組的內容為30H和21H,它既可表示漢字“啊”的國標碼,又可表示西文“0”和“!”的ASCII碼。為此,漢字機內碼應對國標碼加以適當處理和變換。
國標碼的機內碼為二位元組長的代碼,它是在相應國標碼的每個位元組最高位上加“1”,即
漢字機內碼=漢字國標碼+8080H
例如,上述“啊”字的國標碼是3021H,其漢字機內碼則是B0A1H。
漢字機內碼的基礎是漢字國標碼。
機內碼:為了避免ASCII碼和國標碼同時使用時產生二義性問題,大部分漢字系統都採用將國標碼每個位元組高位置1作為漢字機內碼。這樣既解決了漢字機內碼與西文機內碼之間的二義性,又使漢字機內碼與國標碼具有極簡單的對應關係。
漢字機內碼、國標碼和區位碼三者之間的關係為:區位碼(十進制)的兩個位元組分別轉換為十六進制後加2020H得到對應的國標碼;機內碼是漢字交換碼(國標碼)兩個位元組的最高位分別加1,即漢字交換碼(國標碼)的兩個位元組分別加80H得到對應的機內碼;區位碼(十進制)的兩個位元組分別轉換為十六進制後加A0H得到對應的機內碼。
舉例
機內碼位BEDF,求區位碼?
有兩種解法:1.BEDFH-A0A0H=1E3FH=3063D;
2.BEDFH-8080H=3E5FH(國標碼),3E5FH-2020H=1E3FH=3063D.