计算机的使用编码,计算机中使用的编码

计算机中使用的编码

一、ASCII编码

在计算机中,任何信息都必须转换为二进制数据进行存储和处理。键盘上的英文字母、阿拉伯数字、各种标点符号、各种控制符号(如回车键、删除键、退格键等……)也都是以二进制编码的形式存储在计算机中。目前计算机中统一使用的是美国标准信息交换代码,简称ASCCII编码。ASCII编码以表格的形式统一规定了计算机中各种常用符号所使用的二进制编码。

目前计算机中使用最广泛的编码是美国国家信息交换编码,简称ASCII码。标准ASCII 码也叫基础ASCII码,它使用7 位的来表示所有的大写和小写字母,数字0 到9、标点符号,以及在美式英语中使用的特殊。其中编号为0至31的32个编码及编号为127的编码(共33个)对应的符号是,这些字符包括:LF(换行)、CR(回车)、FF(换页)、DEL()、BS(退格)、BEL(响铃)等。这些符号不能在屏幕上显示或打印,但会依不同的应用程序而实现特定的控制功能。编号为32-126的95个符号,是可显示的字符,每个字符都可在屏幕上显示或通过打印机进行打印,它们包括空格、52个大小写英文字母、阿拉伯数字、标点符号和一些常用符号。

标准ASCII码表参见下表,为了便于阅读或记忆,表中的二进制编码都以十进制数的形式给出。实际在计算机中是以二进制形式存储的。

a4c26d1e5885305701be709a3d33442f.png

二、汉字编码

1、区位码和国标码

1981年我国颁发GB2312-80国家标准信息交换用汉字编码字符集-基本集,规定常用汉字总数为6763个,其中一级汉字为3755个(都是常用的汉字),二级汉字为3008个(都是不常用的汉字),除汉字外字符集中还有一般符号202个(标点符号、运算符号、单位符号、制表符号),序号60个,数字22个,拉丁字母52个,日语假名169个,希腊字母48个俄文字母66个汉语拼音符号和注音符号63个。

汉字编码表以二维表的形式列出,表有94行,94列,行序号称作区号,列序号称作位号,该表称作区位表,一般符号占用1-10区(表的前十行),一级汉字占16区到55区,二级汉字占56区到87区,一级汉字以汉字的读音的顺序排列,二级汉字按偏旁部首顺序排列。

每个汉字可由区号和位号来唯一确定,汉字的区号和位号合在一起称作汉字的区位码(即汉字在表中的行序号和列序号合起来称作汉字的区位码)。显然区码和位码各需一个字节来编码表示。因为ASCII编码的前32个符号(0-31)是控制符号,可显示符号是从第32号编码开始,为了使汉字编码和ASCII编码一致,所以汉字区码和位码各加上32,作为汉字的国标码,区码和位码各加上32,实际就是各加上十六进制数20H。

比如汉字“唱”字位于区位表中的第19区第10位(即第19行第10列),它的区位码写成二进制是00010011B和00001010B,分别写成十六进制数后是13H,0AH,分别加上20H后就变成33H和2AH。这就是“唱”字的国标码两个字节的编码。

2、机内码

在计算机中ASCII是单字节编码,因为只有128个符号,所以只需使用一个字节二进制中的低七位就可以了,而最高位只需为0即可。而汉字因数量众多,只能使用双字节进行编码,双字节由16位二进制数组成,最多可以给216(二的十六次幂,即65536)个汉字进行编码,而区位表中只有94X94(8千多个符号和汉字),所以我们实际只使用两个字节中各字节的低七位,而表示汉字的两字节中的最高位也恰是0,如果在计算机中直接用国标码作为汉字的编码,则一个汉字编码会和两个ASCII表中的符号混淆,计算机无法区分是一个汉字编码还是两个ASCII符号编码。为了避免混淆,我们实际上将国标码的两个字节二进制数的最高位由0变成1(即两字节的国标码,各字节都增加了十六进制数80H),就可以和ASCII符号进行区分,因为ASCII编码每字节的最高位是0。这样规定后的汉字编码可以直接在计算机中用来处理汉字,这种编码称作汉字的机内码。于是有如下关系:

区位码+2020H为国标码

国标码+8080H为机内码

3、汉字的外码

外码也称作输入码,因汉字众多,所以要通过英文键盘将汉字输入到计算机内,就需要用到汉字的输入编码,汉字输入编码有多种方案。如拼音输入法(通过汉语拼音输入汉字),五笔字形输入(通过汉字的字根和构字的部件输入汉字),区位码输入(通过汉字的区位码输入汉字)等……。

4、汉字的字型码

汉字的字形很复杂,有多种字体,如宋体、楷体、行体、黑体等,计算机需要用多个字节的二进制数才能记录这些字型信息,通常用16X16点阵、32X32点阵、48X48点阵等多种不同的精度来记录汉字的字模信息。比如16X16点阵的汉字需要用32个字节来表示汉字的各笔画。如下图所示。每行用两个字节,共十六行,使用32个字节,每个字节的每一位如果是0表示这里无笔画,如果是1表示这里有笔画。

a4c26d1e5885305701be709a3d33442f.png

汉字在打印或显示时需要用到这些信息。

一种字体的全部汉字的字型信息存储在称作字库的文件中,因此汉字库的容量是很大的。我们通常将一篇文章存储在磁盘上实际上存的是文章中每个汉字的机内码,打印时由计算机到字库中逐个调出字模信息进行打印,而字库并不需要随文章一起保存。

我们用输入码将汉字输入到计算机中,计算机用内码来保存和处理汉字,要显示或打印汉字时,计算机再到字库中取出字型编码信息进行显示或打印。

三、Unicode编码

因为世界上各个国家使用的符号文字均不同,为了满足跨语言、跨平台进行文本转换、处理的要求而出现了一种新的编码方案- Unicode编码,这种编码为世界各国使用的语言符号提出了统一的编码方案。它将所有语言都统一到同一套编码中,涵盖了世界各地与出版行业字符的全部。而且它的产生是以各个国家或国标字符编码为基础的。目前,Unicode编码在网络、Windows系统和很多大型中得到广泛应用。ASCII编码、汉字符号都是这个编码系统的子集。

Unicode为世界各个国家的全部语言文字和印刷符号作了统一的编码,但并没有规定这些编码在计算机中如何实现,UTF-8是Unicode的一种实现方式,UTF-8规定了这些编码在计算机内如何用二进制数表示和存储,因为Unicode编码方案可以表示世界上的全部文字符号,所以在计算机中实现时一个符号也需要多个字节,但如果使用多个字节表示原来的单字节的ASCII编码,则无疑又是一种浪费,为了避免这种情况的发生,UTF-8编码采用了一种变长字节编码方式,即编码长度从一字节至六字节不等,对常用的ASCII符号,仍只使用一个字节进行编码,而对汉字或其他符号则使用更多字节进行编码,其实现原理是:

只使用一个字节的UTF-8编码,字节的最高二进制位为0

如果是多字节编码,则编码的第一个字节以“11……0”的形式开始,首字节后的其余字节均以10开始,首字节中1的个数表示该编码使用的总字节数,假如有如下编码:

1110XXXX 10XXXXXX 10XXXXXX

(X可以是1或0)

由第一个字节以1110开始,计算机系统可以识别出这是一个由三字节完成的编码,其后面的两个字节与首字节均属于同一编码。

其中第二字节第三字节开始的10是固定的模式,所以能用来实际编码使用的位数只有用X表示的二进制数(共20位)

下面给出了1至6字节编码的各字节的表示方法:1字节 0xxxxxxx 2字节 110xxxxx

10xxxxxx 3字节 1110xxxx 10xxxxxx

10xxxxxx 4字节 11110xxx 10xxxxxx

10xxxxxx 10xxxxxx 5字节 111110xx 10xxxxxx

10xxxxxx 10xxxxxx 10xxxxxx 6字节 1111110x 10xxxxxx

10xxxxxx 10xxxxxx 10xxxxxx

10xxxxxx由上面的表示不难看出,UTF-8中可以用来表示字符编码的实际位数最多有31位,即上表中x所表示的位。因此那些基本ASCII字符集中的字符(UNICODE兼容ASCII)只需要一个字节的UTF-8编码(7个二进制位)便可以表示。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值