首页 > 编程知识 正文

一个完整的计算机系统指的是(计算机系统软件由什么组成)

时间:2023-05-06 04:33:04 阅读:105112 作者:769

我相信任何一个中国开发者都绝对遇到过乱码的问题。中文,尤其是繁体和简体中文乱码是很常见的。为什么会有乱码?电脑到底是怎么储存我们的中文的?今天让我们仔细看看:

字节、位、二进制

要理解编码问题,需要了解计算机数据存储的原理。我们都知道计算机只存储二进制值,即0和1。那么机器是如何将我们人类能够识别的单词转换成0和1进行存储的呢? 你还记得你第一次编程入坑时接触到的ASCII码吗?可能很多人学了之后都不知道ASCII码是什么。其实说白了就是一个人造人做的从人物到价值观的映射表。 比如字符‘a’对应的数字是65,65是十进制表示法,转换成二进制是01000001;好了,现在我们通过这个映射关系把A转换成二进制01000001,那么如何保存呢?这又涉及到字节和比特的概念。 字节是计算机中数据处理的基本单位。在计算机中,信息是以字节存储和解释的。规定一个字节由八个二进制位组成,即一个字节等于八个位(1字节=8位)。一位可以存储一个状态码,即0和1;虽然英文字符是一个字节,但是从字符A到存储器的所有关系是这样的: 00-1010:知道了英文字符的存储,那么中文字符也存储为英文。然而,我们的汉语博大精深。中文不知道有多少个字,但已知有近十万个字。如果一个汉字只有一个字节,也就是八位,根本不够,因为一个字节最多可以表示到127(第一位是符号位,所以剩下的七位有效表示数字),也就是每一位都是1,那么就是011111111,十进制是127,0到127都是ASCII码占用的。一万个汉字,127真的不够用,世界上有这么多的中国语言和文字,我该怎么办?这时,Unicode问世了。 Unicode属于编码字符集的范围。Unicode所做的就是把我们需要表示的字符表中的每个字符映射成一个数字,这个数字叫做对应字符的码点码点。比如Unicode中“颜”字对应的码位是U0x4E25。同样,将其转换为二进制:1001110001001001。显然,一个字节绝对不够。我们需要两个或更多字节来存储它。然后问题又来了。我们应该使用两个字节还是三个字节或更多?聪明人出来说,我们不需要死,我们用更长的字节。如果你用一个变长字节来表示一个字符,你必须知道有多少字节代表一个字符,否则计算机就没那么聪明了。我们来介绍一下最常用的UTF-8。 UTF-8的编码规则非常简单,只有两个: 1)对于单字节符号,字节的第一位设置为0,接下来的7位是该符号的Unicode代码。 2)对于n字节的符号(n ^ 1),第一个字节的前n位全部设置为1,第n位设置为0,后续字节的前两位全部设置为10。未提及的其余位都是该符号的Unicode代码。 下表总结了编码规则,字母X表示可用的编码位。 Unicode范围| UTF-8编码系统(十六进制)|(二进制)-————————————————————————————————————————xxxxx

xx

0000 0080~0000 07FF | 110

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。