只有 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'——用代码亲眼看到编码的存在。