深学 DeepLearn纯静态学习平台 · 借鉴 DeepTutor

1. 数据如何表示:二进制、字符与编码

计算机的世界里只有 0 和 1——位、字节、ASCII、Unicode 与 UTF-8 的来龙去脉。

约 8 分钟3 道测验 6 张抽认卡

只有 0 和 1 的世界

计算机的物理底层是电路:通电与断电,对应 1 与 0。所以一切数据——数字、文字、图片、这首歌——最终都是一长串二进制位。

十进制 13  =  8 + 4 + 1
           =  1×2³ + 1×2² + 0×2¹ + 1×2⁰
           =  二进制 1101

位(bit) 是最小单位;字节(byte) 是 8 个位,能表达 256 种状态,是更常用的基本单位。

文字怎么变成数字:编码的进化

第一阶段:ASCII(只管英文)

1963 年的标准,用 0~127 给英文世界编号:

'A' → 65        'a' → 97        '0' → 48

一个字节本来能存 256 种状态,ASCII 只用了一半——剩下的一半被各国各自定义,于是「同一个字节,中国人看成汉字,日本人看成假名」,互相交换文件就是乱码。

第二阶段:Unicode(给全世界编号)

Unicode 只解决「编号」:给每个字符一个全球唯一的码点。

'深' → U+6DF1        'A' → U+0041        '🎉' → U+1F389

第三阶段:UTF-8(决定编号如何存储)

码点怎么落盘存储?UTF-8 用变长方案:ASCII 字符 1 字节(完全兼容),欧洲字母 2 字节,常用汉字 3 字节,emoji 4 字节。它成了互联网的事实标准——本站 HTML 里那句 meta charset="UTF-8" 就是在声明「请按 UTF-8 解读我」。

十六进制:程序员的速记

一位十六进制恰好表示 4 位二进制,读写大数很方便:

11111111  →  0xFF  →  255
颜色 #4F46E5  =  R:79  G:70  B:229

💡 动手验证:Python 里输入 ord('深') 得 28081(即 0x6DF1),bin(13) 得 '0b1101'——用代码亲眼看到编码的存在。

✍️章节测验(3 题)

选好后点击提交,成绩会记录到数据库,帮你追踪掌握情况。

  1. 1. 一个字节(byte)由多少个二进制位(bit)组成?

  2. 2. 二进制数 1010 等于十进制的多少?

  3. 3. 关于 UTF-8,下列说法正确的是?

进度加载中…