发布网友 发布时间:2022-03-31 13:13
共3个回答
热心网友 时间:2022-03-31 14:42
区位码是中国定义的94乘以94的一个表。一个字节只用低七位的话有127中状态。英文中0到32的字符都是些控制字符,第127位是del字符,即删除字符,所以总共有34个控制字符。(从0到127)128减去(从0到32是33加上第127位的那一个字符共34)34等于94。所以可供中文使用的是94个状态。
国标码其实就是交换码,是中国用来交换的,当然交换码是不能引起歧义的,94行94列的一个编码再加上32就是行号从33到126列号也是从33到126。这样就与0~32的英文控制字符没有冲突了。
其实你在记事本里键入tab键然后用十六进制查看器查看一下就知道tab键对应的十进制是9。所以在中文输入法状态下还是会用到英文的34个控制字符的。也就是说人家美国已经制定了这些控制字符,咱们借来用就是了。
国标码也是用来交换的,最高位是0,最好是避开人家的控制字符,所以就剩下94个了。
其实我个人认为,完全可以用128*128这样的表。因为,我们的两字节汉字最高位(机内码最高位是1)是1,已经完全和英文区分开了,没必要用什么国标码之类的中间技术,直接就是区位码和机内码,机内码=区位码-1+128(区位码是从1开始算起的,其实真正的范围是0到127,但总数是一样的128),这样多省事啊
但国家由国家的想法,我也不清楚 哎
总之这个问题也不要去深究了,这是国家编码人员负责的事情,咱只要知道怎么用就行了。你只要记住加上32是为了避免和英文的控制字符冲突就行了。
热心网友 时间:2022-03-31 16:00
1、加上32是为了避免和英文的控制字符冲突。
2、汉字区位码使用01~94作区号,01~94作位号。区号和位号组合在一起就构成了汉字的区位码。
3、汉字国标码用两个字节表示,每个字节用七位码(最高位为0),与ascii码0~127相同。
4、汉字作文字处理时,也使用英文控制字符,如果直接转换过来就会造成混乱,加上32就是为了让出英文控制字符的编码。
热心网友 时间:2022-03-31 17:35
区位码、国标码与机内码的转换关系
方法:
(1)区位码先转换成十六进制数表示
(2)(区位码的十六进制表示)+2020H=国标码;
(3)国标码+8080H=机内码
举例:以汉字“大”为例,“大”字的区内码为2083
示例解析:
1、区号为20,位号为83
2、将区位号2083转换为十六进制表示为1453H
3、1453H+2020H=3473H,得到国标码3473H
4、3473H+8080H=B4F3H,得到机内码为B4F3H
三、小结:
字符编码的两种表示方式:ASCII(字符的表示);GB2312(国标码,汉字编码)