注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

火力光波的博客

火一般的热情 光一样的速度

 
 
 

日志

 
 

汉字区位码国标码与机内码  

2013-07-02 21:03:02|  分类: 编码解码 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

输入码:
我们知道,键盘是当前微机的主要输入设备,输入码就是使用英文键盘输入汉字时的编码。目前,我国已推出的输入码有数百种,但用户使用较多的约为十几种,按输入码编码的主要依据,大体可分为顺序码、音码、形码、音形码四类,如“保”?字,用全拼,输入码为码为“BAO”,用区位码,输入码为“1703”,用五笔字型则为“WKS”。
区位码:
计算机只识别由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”和“#”的ASCII也为31H和23H,现假如内存中有两个字节为31H和23H,这到底是一个汉字?,还是两个西文字符“1”;和“#”?于是就出现了二义性,显然,国标码是不可能在计算机内部直接采用的,于是,汉字的机内码采用变形国标码,其变换方法为:将国标码的每个字节都加上128,即将两个字节的最高位由0改1,其余7位不变,如:由上面我们知道,“保”字的国标码为3123H,前字节为00110001B,后字节为00100011B,高位改1为10110001B和10100011B 即为B1A3H,因此,“保”字的机内码就是B1A3H;。
显然,汉字机内码的每个字节都大于128,这就解决了与西文字符的ASCII码冲突的问题。
如上所述,汉字输入码、区位码、;国标码与机内码都是汉字的编码形式,它们之间有着千丝万缕的联系,但其间的区别也不容忽视。

小结:
输入码:是用英文键盘输入汉字时的编码。如“保”字的输入码,全拼为“BAO”,区位为“1703”,五笔为“WKS”。
区位码:将汉字和图形符号排列在一个94行94列的二维代码表中,每两个字节分别用两位十进制编码,前字节的编码称为区码,
             后字节的编码称为位码,此即区位码。如“保”字处于17区第3位,区位码为“1703 ”。
国标码:先将十进制区码和位码转换为十六进制,再分别加上20H。
             如“保”字,区位码:1703D→1103H→+2020H→国标码:3123H。    
       或,先在区码和位码上分别加32D,再将十进制转为十六进制。
             如“保”字,区位码:1703D→+3232D→4935D→国标码:3123H。
机内码:为避免与ASCII码发生冲突,将国标码的前后字节都加上,十进制是128D ,十六进制是80H ,二进制是10000000B。
转换公式:
国标码=区位码+2020H (或3232D,100000B)
机内码=国标码+8080H (或128128D,10000000B)
机内码=区位码+a0a0H (或160160D,10100000B)
其中:H、D、B表示16、十、二进制。
实例:
"保"字:区位码→国标码
16进制:1103H +2020H →→3123H
十进制:1703D +3232D →→4935D
二进制:10001B+100000B→110001B
             11B     +100000B→100011B
"保"字: 国标码→机内码
16进制:3123H   +8080H →→→b1a3H
十进制:4935D   +128128D →→177163D
二进制:110001B+10000000B→10110001B
             100011B+10000000B→10100011B
"保"字: 区位码→机内码
16进制:1103H  +a0a0H→→→b1a3H
十进制:1703D  +160160D→→177163D
二进制:10001B+10100000B→10110001B
             11B     +10100000B→10100011B
其中:
16进制 a0H=20H+80H
十进制160D=32D+128D
二进制10100000B=100000B+10000000B
来源:
百度知道

工具:进制转换  字符转二进制   汉字转16进制    汉字转区位   区位查询   区位查询   编码查询 
码表:区位码表D  区位码表D  GBK码表H   UNI码表D  UNI码表D   UNI码表H    汉字拼音
资料:GB2312汉字机内码、国标码和区位码教程   汉字机内码、国标码和区位码定义区别

 

返回目录

  评论这张
 
阅读(412)| 评论(1)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017