位、字节、字符与字(字母跟汉字)的爱恨情仇

发布于 2022-02-24  114 次阅读


在开发过程中,我们经常遇到位、字节、字符以及字之间的关系。比如说mysql中创建表的时候我们一般都会使用char(m),varcahr(n)等,那你真的知道他们代表什么意思吗?不妨一起来讨论一下:

在这里插入图片描述
ps: 先来放个大招吧

位(bit):是计算机 内部数据 储存的最小单位,11001100是一个八位二进制数。

字节(byte):是计算机中 数据处理 的基本单位,习惯上用大写 B 来表示,1B(byte,字节)= 8bit(位)

字符:是指计算机中使用的字母、数字、字和符号

  • ASCII 码:

    1. 1个英文字母(不分大小写)= 1个字节的空间
      1. 1个中文汉字 = 2个字节的空间
      2. 1个ASCII码 = 一个字节
  • UTF-8编码:

    1. 1个英文字符 = 1个字节
    2. 1个英文标点 = 1个字节
    3. 1个中文(含繁体) = 3个字节
    4. 1个中文标点 = 3个字节
  • Unicode编码:

    1. 1个英文字符 = 2个字节
    2. 1个英文标点 = 2个字节
    3. 1个中文(含繁体) = 2个字节
    4. 1个中文标点 = 2个字节
因为网上的优质文章比较多,只是比较难寻找,
为了节省大家时间,我找了几篇比较好的文章放在下面。
  • 精选相关文章
  1. 计算机中,为什么一个字节是8位?
  2. ASCII、Unicode、UTF-8、UTF-16、GBK、GB2312、ANSI等编码方式简析
  3. GBK,UTF-8,UTF-16之间的转换
  4. UTF-8, a transformation format of ISO 10646

建议从1开始看,了解其所以然。

从小学数学的角度来看的话就是:字 ≥ 字符 ≥ 字节 > 位


见其广知其深