关于国标码和内码

来源:百度知道 编辑:UC知道 时间:2024/06/08 19:13:47
我不明白的是:既然国标码不能在计算机中表示,为什么国家在制定标准时,为什么不直接制定为机内码呢?是不是多此一举?还是有什么别的原因?

我觉得是这样的:
个人认为国标码是按人们的习惯从0001 0001(0101H)开始排的,如果当初制定的时候就从1001 1001(0707H)开始,你觉得是不是也不习惯吧.不知道说的对不对,也不知道有没有0101H这个汉字哈.我只是举个例子而已.

国标码和机内码有本质上的区别...制定两种编码就是怕引起冲突..怎么能说多此一举.. 你可以看看下面的

国标码并不等于区位码,它是由区位码稍作转换得到,其转换方法为:先将十进制区码和位码转换为十六进制的区码和位码,;这样就得了一个与国标码有一个相对位置差的代码,;再将这个代码的第一个字节和第二个字节分别加上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://www.vbeach.net/bbs/arch