信息编码–区位码,国标码,内码

  • Post author:
  • Post category:其他


计算机内的信息编码


西文字符编码

西文就是英文,数字,英文标点等等,

每个ASCII码以一个字节


(Byte)


储存,国际通用的


7


位码用


7


位二进制数表示一个字符的编码


,


其编码范围是


00000000-01111111


,共


2


7


=128


个字符。(最高位是0)也就是计算机内部使用一个字节存放一个


7





ASCII


码,

b0–b6表示ASCII码值,最高位b7置0。


中文字符编码

后来,计算机传入中国并开始普及时,首要问题是解决中文编码问题,即刻出现了


区位码

(国家标准定义)

GB2312是一种中文的编码方式,具体是由区位码来实现的。GB2312将7445个字符编入一个 94*94 的二维表, 行就是 “区”、列就是 “位”, 其中的一个汉字由区、位唯一定位,其对应的区、位合并就为区位码。一级汉字3755个(16-55 区: 常用汉字, 按拼音排序),二级汉字编3008个(56-87 区: 非常用汉字, 这是按部首排序的),682个非汉字(00-09 区为符号、数字、英文字符…制表符等)10-15 区: 空白, 留待扩展;88-94 区: 空白, 留待扩展.


国标码:

汉字信息交换码

汉字国标码=十六进制区号和位号分别加上20H,将 “区” 和 “位” 分别加上32(十六进制表示: 20H) 作为国标码。为什么要加上32呢,当时在制定GB2312之前,就决定覆盖掉ASCII中符号和英文字母部分,所以将其中的英文字母和符号重新编入GB2312中。而对于ASCII中

前32个控制字符则继续沿用

。所以保留前32字符,就需要将汉字编码

向后偏移32

,十六进制20H,这也就是区位码要加上20H得到国标码,这就是GB2312的编码规范。


内码:

计算机中存储的就是内码,但是这样并不能在计算机上使用,因为这样会和 ASCII 码混淆。所以又有规定

把每个字节的最高位都从 0 换成 1

,就是把每个字节(区和位)都

再加上 128(

十六进制的: 80H),从而得到 “机内码”, 也就是前面所说的 “内码”。内码是微软为了解决冲突问题而采用的方式,本质上是修改了GB2312的编码标准,而这种方法最后产生的编码称为内码。

区位码 —>国标码

区和位分别 +32(20H)

国标码 —>内码

国标码区和位分别+128 (80H)

区位码 + A0A0H = 内码。



版权声明:本文为lisainan66原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。