计算机组成原理学习笔记三 — 字符与字符串

一、编码基本概念

由于计算机内部只能识别和处理二进制代码,所以字符都必须按照一定的规则用一组二进制编码来表示

(1)字符

字符字符是各种文字和符号的总称。 字符是计算机中经常用到的二进制编码形式,通常由8个二进制位(一个字节)来表示一个字符。 字符包括各国家文字、标点符号、图形符号、数字等

(2)字符集

字符集字符集是多个字符的集合,字符集种类较多,每个字符集包含的字符个数不同。字符集就像我们上学时所用到的字典,中文有汉语词典,英文有英语词典。常见字符集名称:ASCII字符集、GB2312字符集,其中ASCII就类似于英文字典收录一些英文字母,GB2312就类似于新华字典,收录了中文字符

(3)字符编码

字符编码:计算机要准确的处理各种字符集文字,需要进行字符编码,就是以二进制的数字来对应字符集的字符,以便计算机能够识别和存储各种文字。字符集只是字符的集合,并不能被计算机进行存储和应用,只有转换成二进制码才能被计算机所识别。

(4)码点

码点是指在某个字符集中,根据某种编码规则将字符编码后得到的值。比如在ASCII字符集中,字母A经过ASCII编码得到的值是65,那么65就是字符A在ASCII字符集中的码点。

总结:字符集就是把字符放到一起的一个集合,类似于我们的字典。而这个集合的每一个字符都对应一个数字,也就是把字符编号,每个字符都对应一个编号,叫做码点。那么,这样就建立起来数字和字符之间的索引关系。那么,某个字符在计算机中怎么表示,具体占用几个字节等等,这些就需要编码规则来解决了。这个就是字符编码,他来解决根据某个规则来将字符映射到相应的码点上面。

二、字符编码种类

(1)ASCII

ASCII码是西欧编码的方式,采取7位编码,所以是27 = 128,共可以表示128个字符

  • 0~31及127为控制字符或通信专用字符,共计33个字符(如换行LF,回车CR等)

  • 其余的95位为英文字母和标点符号及运算符号等,是可显示字符。

    • 48~57为0到9十个阿拉伯数字
    • 65~90为26个大写英文字母
    • 97~122号为26个小写英文字母

请添加图片描述
在英语中,用128个符号编码便可以表示所有,但是用来表示其他语言,128个符号是不够的。比如,欧洲有好多小国家,每个国家都有自己的语言体系。于是,一些欧洲国家就决定,利用字节中闲置的最高位编入新的符号,后128个字符每个国家或地区都有自己的编码标准。这样一来,这些欧洲国家使用的编码体系,可以表示最多256个符号 [5] 。

后128个称为扩展ASCII码。许多基于x86的系统都支持使用扩展(或“高”)ASCII。扩展ASCII 码允许将每个字符的第8 位用于确定附加的128 个特殊符号字符、外来语字母和图形符号 [1] 。

根据这个规则,就形成了很多子标准:ISO-8859-1、ISO-8859-2、ISO-8859-3、……、ISO-8859-16。这些子标准适用于欧洲不同的国家地区。

(2)GB2312

欧洲人的问题解决了,等中国人们得到计算机时,已经没有可以利用的字节状态来表示汉字,而且中国文化博大精深,需要保存的常用汉字就有6000多个。我们的方法就是将前面127位保存,意义与之前的含义相同,但两个大于127的字符连在一起就表示一个汉字,前面的一个字节(他称之为高字节)从0xA1用到0xF7,后面一个字节(低字节)从0xA1到0xFE,这样就可以收录7000多个常用汉字,而且还包括了数学符号,数字,罗马数字。于是就把这种汉字方案叫做 “GB2312”。GB2312 是对 ASCII 的中文扩展。

  • 基本集共收入汉字6763个和非汉字图形字符682个

  • 整个字符集分成94个区,每区有94个位,每个区位上只有一个字符

    例如“万”字在45区82位,所以“万”字的区位码是:4582。

    • 01~09区(682个):特殊符号、数字、英文字符、制表符等,包括拉丁字母、希腊字母、日文平假名及片假名字母、俄语西里尔字母等在内的682个全角字符;
    • 10~15区:空区,留待扩展;在附录3,第10区推荐作为 GB 1988–80 中的94个图形字符区域(即第3区字符之半形版本)。
    • 16~55区(3755个):常用汉字(也称一级汉字),按拼音排序;
    • 56~87区(3008个):非常用汉字(也称二级汉字),按部首/笔画排序;
    • 88~94区:空区,留待扩展。

请添加图片描述
例如: “啊”这个字,在上图中为16区,第一个字,所以区码位为1601,它会以两个字节,0xB0(第一个字节) 0xA1(第二个字节)储存。

计算方式:16区转换为16进制为0x10,01为转换为16进制为0x01,将二者都加上0xA0,得到存储位置为0xB0 0xA1
请添加图片描述

(3)GBK

中华文化博大精深,几千个文字根本不够用,于是对GB2312进行了向上扩展,扩展之后的编码方案被称为 GBK 标准,GBK 包括了 GB2312 的所有内容,同时又增加了近20000个新的汉字(包括繁体字)和符号。

(4)GB18030

我们是一个56个族民为一家的国家, 少数民族语言也是我国的瑰宝,必不可少。于是我们进行了再扩展,又加了几千个少数民族语言,GBK扩展成了GB18030。

(5)UNICODE

全世界有这么多个国家, 每个国家都编写一套自己的编码标准。比如我看完国足,要想访问阿曼的网站,是不是还要安装阿曼的字符编码,否则就会出现乱码。还好有一个叫ISO的组织,他将地球上所有的字符,所有的符号进行了统一的编码,就创造了UNICODE ,也称万国码,统一码。

UNICODE 是用两个字节来表示为一个字符,他总共可以组合出65535不同的字符,这大概已经可以覆盖世界上所有文化的符号。

  • UTF-8
    互联网的普及,要求出现一种统一的编码方式。UTF-8就是在互联网上使用最广的一种unicode的实现方式。其他实现方式还包括UTF-16和UTF-32,不过在互联网上基本不用。UTF-8是Unicode的实现方式之一
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值