D
← 返回首页

Chapter 00 · foundations

二进制如何表示一切

在 CPU 之前——文字、整数、颜色,凭什么都能被装进 0 和 1? 这一章不讲 CPU——先把"对计算机来说什么都是数字"这条最底层原则, 一帧一帧揭开给你看。后续所有章节都建立在这条基础之上。

实验台 · 把任何东西"拍扁"成 0 和 1

换不同模式 (文本 / 整数 / 颜色), 修改输入, 然后按 ▶ 看每一帧"切片 → 编码 → 翻位"是如何把人类概念变成 8 位字节的。 每一个 bit 都对应一个 2 的幂 (27...20), 整字节的值就是被点亮的那些幂相加。

BINARY LAB
学习时间线

输入 · 把人能读懂的文字放进转换台

1/22
frame 1/22 · intro
ASCII 速查表

ASCII 就是一张约定表: 字符先查成编号, 编号再写进内存。

H编号 720x48
i等待查表--
位权累加器

每个格子代表一个权重。bit 是 1 就把权重加进去, bit 是 0 就跳过。

0 = 0 / 目标 72
2^7
128
?
还没检查
2^6
64
?
还没检查
2^5
32
?
还没检查
2^4
16
?
还没检查
2^3
8
?
还没检查
2^2
4
?
还没检查
2^1
2
?
还没检查
2^0
1
?
还没检查
字符队列H 处理中i 等待

工程细节

ASCII 不是唯一答案

ASCII 把 95 个可打印字符塞进 1 字节 (0x20..0x7E)。中文、emoji 远超 256, 现代系统普遍用 UTF-8——它对 ASCII 兼容 (1 字节), 对中文用 3 字节, 对 emoji 用 4 字节。Demo 里只演示 ASCII, 是因为 "1 字符 = 1 字节"最直观, 而 UTF-8 的"变长编码" 是另一个独立话题, 会在编译器/字符串章再展开。

为什么字节 = 8 位

8 位不是天然定律, 是历史选择: 早期计算机有 6 位 / 7 位 / 9 位字节, IBM System/360 (1964) 把 8 位定为事实标准——它正好能表示 ASCII (7 位 + 1 位扩展), 又能用 2 位表达一个十六进制位 (4 位 = 一个 hex char, 8 位 = 2 个 hex char), 对 BCD 也友好。 一旦硬件总线、内存芯片、文件格式都按 8 位走, 这条事实标准就被钉死了。

RGB 24 位真的够吗

每通道 8 位 = 256 级亮度, 三通道相乘 = 1677 万色, 通常被叫"真彩"。它够大众场景, 但暗部 256 级仍可见色阶 (banding), HDR 用 10 位 / 12 位 / 16 位浮点解决。 真实显示链路里还有 alpha (透明度) 通常再加 1 字节, 32 位/像素 (RGBA8) 是图形 API 默认。

下一步: 这些字节去哪了

从 Ch01 开始, 这些字节会被 CPU 取出 (取指)、解码 (Decoder)、送进 ALU (执行) — 你会看到同样的"8 位字节"在硅片里走完一整个 cycle 的物理路径。