在开发过程中,我们经常遇到位、字节、字符以及字之间的关系。比如说
mysql
中创建表的时候我们一般都会使用
char(m),varcahr(n)
等,那你真的知道他们代表什么意思吗?不妨一起来讨论一下:
ps: 先来放个大招吧
位(bit):是计算机 内部数据 储存的最小单位,11001100是一个八位二进制数。
字节(byte):是计算机中 数据处理 的基本单位,习惯上用大写 B 来表示,1B(byte,字节)= 8bit(位)
字符:是指计算机中使用的字母、数字、字和符号
-
ASCII
码:-
1个英文字母(不分大小写)= 1个字节的空间
-
1个中文汉字 = 2个字节的空间
-
1个ASCII码 = 一个字节
-
-
UTF-8
编码:-
1个英文字符 = 1个字节
-
1个英文标点 = 1个字节
-
1个中文(含繁体) = 3个字节
-
1个中文标点 = 3个字节
-
-
Unicode
编码:-
1个英文字符 = 2个字节
-
1个英文标点 = 2个字节
-
1个中文(含繁体) = 2个字节
-
1个中文标点 = 2个字节
-
因为网上的优质文章比较多,只是比较难寻找,
为了节省大家时间,我找了几篇比较好的文章放在下面。
- 精选相关文章
依据
ascill码表来分析,为什么一个字是8位
标准ASCII码占用一个字节,但是只用了后7位,第一位是0.一个字节本来可以表示256种不同情况,而由此ASCII码只有128种符号。这128种符号包括英文26字母的大小写、数字0-9、32个不可打印的控制字母、符号(就是我们在键盘上可以看到的符号)
- 不同编码转换的理论基础
1. UTF-16转UTF-8
2. UTF-16转GBK
3. UTF-16和UTF-8之间的转换
…
建议从1开始看,了解其所以然。
从小学数学的角度来看的话就是:
字 ≥ 字符 ≥ 字节 > 位