位,字节,字符,字符集,编码之间的关系

位,字节,字符,字符集,编码之间的关系

1.位

数据存储的最小单位。一个二进制的0或1就代表一个位。

2.字节

8各位构成一个字节。也就是一个8位数的二进制。

3.字符

就是一个符号,@#¥&%…

4.字符编码的发展

编码的发展大致分为三个阶段

编码 说明
第一阶段 ASCII 计算机是外国人发明的所以一开始只支持英文显示,而只需要8位数的二进制就可以将所有的英文字母表示在内**(一个字符用一个字节表示)**
第二阶段 ANSI本地化 为了能使计算机支持更多的语言,比如说汉字,如果使用一个字节表示一个汉字的话,那么8位数的二进制是不能包含所有,因此,ASNI采用两个字节表示一个字符。不同的国家采用了不同的标准,由此产生了 GB2312, BIG5, JIS 等各自的编码标准。但是这样就会出现一个问题,不同的ASNI编码方式是无法进行交流的,因此出现unicode编码
第三阶段 Unicode Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。它仅仅只是一个字符集。

字符串在内存中的存放方法:

在ASCII阶段:一个字节存放一个字符。比如“Bob23”,在内存中的表现:

​ 42 6F 62 31 32 33 00

​ B o b 1 2 3 \0 ->字符串结束的标志。

在ANSI阶段:支持了多种语言,此时每个字符用一个或者多个字节表示,

​ D6 D0 CE 31 32 33 00

​ 中 文 1 2 3

5.字符集

​ 使用哪些字符,用汉字举例:也就是说哪些汉字,字母和符号会被存放到这个标准中。这个标准的集合就叫做字符集。

​ 上面说的Unicode仅仅只是一个字符集,其意思就是说Unicode编码表:只规定了字符所对应的二进制编码是多少。但是其编码方式我们并不知道(就是如何存储的)。以“汉”为例,二进制编码是0x6c49,对应的二进制数是 110110001001001,二进制数有 15 位,这也就说明了它至少需要 2 个字节来表示。往后有的可能需要3个字节或4个字节来表示,那么计算机是如何知道2个字节表示的是一个字符,3个表示一个。这就需要通过编码方式来解决。

6.编码方式

​ 规定每个“字符”分别用一个字节还是多个字节存储,用哪些字节来存储,这个规定就叫做“编码方式”。

​ 常见的编码方式:

​ ASCII:ISO-8859-1

​ ASNI:GBK

​ Unicode:utf-8

猜你喜欢

转载自blog.csdn.net/qq_38238296/article/details/86250788