计算机中使用的编码

一、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码表参见下表,为了便于阅读或记忆,表中的二进制编码都以十进制数的形式给出。实际在计算机中是以二进制形式存储的。

二、汉字编码

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表示这里有笔画。

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

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

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

三、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. 韩文编码python_python中的字符串编码问题——4.unicode编解码(以实际工作中遇到的韩文编码为例)...

    韩文unicode编解码 问题是这样,工作中遇到有韩文数据出现乱码,说是unicode码. 类似这样: id name323 52186863 149 63637538 314 65516863 32 ...

  2. python中对字符串进行编码_Python 中的字符串编码

    对Python字符编码一直没搞明白,今天看<Python参考手册>再次遇到这个问题,重新整理下 Python中字符串字面量用于指定一个字符序列,其定义方法是把文本放入单引号('),双引号( ...

  3. python字典编码_python中包含UTF-8编码中文的列表或字典的输出

    >>> dict = {"asdf": "我们的python学习"} >>> print dict {'asdf': '\x ...

  4. 计算机中数据的编码方式

    一.整数的表示 由于计算机只能识别二进制的0和1,在存储数据时就涉及到了对数据的编码问题,计算机中对整数的编码有两种不同的方式,分别为: 1. 只能表示非负数,此种类型数据称为无符号类型 即 unsi ...

  5. 使用计算机系统管理商品存货,ERP管理系统中编码的意义

    一个企业中往往有成千上万中商品,如果仅靠商品名称或规格作为管理依据,难免碰到同名同规格的商品,管理起来十分困难,而ERP管理系统中商品对应的唯一编码就能实现商品的科学管理. 一.编码的功能 编码是以简 ...

  6. 计算机有关的基础知识,计算机基础知识之计算机中有关数及编码的知识

    1.4 计算机中有关数及编码的知识 1.计算机是智能化的电器设备 计算机就其本身来说是一个电器设备,为了能够快速存储.处理.传递信息,其内部采用了大量的电子元件,在这些电子元件中,电路的通和断.电压高 ...

  7. 计算机本地磁盘包括,电脑中系统文件夹和本地磁盘各是什么意思?又有什么不同?...

    所谓的32位与64位实际上是指计算机的寻址空间大小,也就是在一个时钟频率动作下寻找内存做出多少位的计算动作.2的5次方是32,而6次方则是64,对于采用二进制的计算机运算来说,寻址位数增加了,性能就能 ...

  8. 计算机组成原理实验写出下列微指令编码,计算机组成原理实验三.doc

    计算机组成原理实验三.doc (5页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 上海大学 计算机学院评分<计算机组成原理实验> ...

  9. 在个人计算机系统中 常见外存储器有(),内蒙古事业单位专业知识计算机考试题库:计算机基础练习题(22)...

    内蒙古事业单位招聘考试网提供内蒙古事业单位招聘信息.内蒙古教育系统事业单位招聘信息.内蒙古医疗卫生系统事业单位招聘信息,主要包括内蒙古事业单位招聘职位表.内蒙古事业单位考试时间.考试题库.考试用书.考 ...

  10. 计算机五笔字型编码方法,无字型五笔编码计算机中文输入法

    主权项: 1.一种计算机中文键盘输入形码编码输入法,使用计算机通用西文键盘,选取汉字\r\r\r\r\n字根,对字根分组,将字根分组定义在西文键盘的不同键位上,构成中文键盘:其字编\r\r\r\r\n ...

最新文章

  1. 创建零填充JavaScript数组的最有效方法?
  2. 电子邮件成企业主动营销的首选工具
  3. 2019-10-12 拉普拉斯变换的理解
  4. PAT (Advanced Level) 1014 Waiting in Line(模拟)
  5. c语言 %15s,c语言求助
  6. NativeXml (2):对象建立
  7. Eclipse 常用技巧及常见问题解决
  8. C++中const使用总结
  9. Turtlebot2 ROS配置超详细教程 ubuntu16.04
  10. python---pass和continue和break和exit()区别
  11. 【服务器正在运行中】以及【切换到】等错误问题的解决
  12. 手机一键抠图软件哪个好?分享三个好用软件给你
  13. WinForm下多层架构的实现
  14. 复化梯形公式matlab实验报告_复化梯形公式matlab
  15. 五笔中比较难拆解的字
  16. google全屏快捷方式 关键字 kiosk
  17. 利用Python进行粗糙的视频字幕识别
  18. 目标检测:传统目标检测方法
  19. 找高清图片素材,这8个网站就够了
  20. 浅析微营销的几个成功模式

热门文章

  1. NuxtJS快速入门
  2. C语言中期报告模板,学院毕业设计(论文)中期报告模板
  3. C# 读写json文件
  4. Vivado 使用方法
  5. NX_UG1872安装
  6. Altium Designer(3)-绘制PCB封装库
  7. 从Gauss-Newton算法到 LM算法 (详细推导及MATLAB实现、多自变量问题)
  8. 2018年技术直播PPT干货分享
  9. Flutter 2.5 的新特性
  10. excel删除行闪退_Excel中出现表格打开闪退的处理方法