首先介绍区位码,区位码是国家标准局1981年颁布的标准,他用两个字节表示一个汉字,每个字节用7位码,并将汉字和图形符号排列在一个94*94的二维代码表中。
也就是说国家标准局当时决定把汉字引入计算机时,做的第一步就是先建立区位码。
在区位码建立后,为了避免和ASCLL编码的前32位控制字符冲突,区位码应该在每个字节上让出32位,即16进制下的20H。因为ASCLL码是单字节,而区位码是双字节,所以每个字节加20H,最后就形成了国标码。
即国标码=区位码+2020H。
在国标码建立后,还是有问题,汉字编码无法和ASCLL编码同时存在,以汉字编码时,输入英文字符就会乱码。故提出汉字内码一说。那怎么处理这件事呢?
我们知道ASCLL码中最大值时127,即0111 1111。也就是说在ASCLL码的单字节中最前面一位始终是0。那么问题就好办了,把汉字字节的最前面一位的0改为1不就和ASCLL码区分开了吗?
两个字节都这么操作,就相当于每个字节加80H,所以汉字内码=国标码+8080H。