从 Bit 到 AGI第一章:比特(Bit)

为什么世界只有 0 和 1

从晶体管开关到全部数字信息——为什么两个符号就够表示一切。

作者 David更新于 第 2 篇(共 186 篇)

手机里的 4K 视频、银行余额、大模型权重,看起来千差万别,但在硅片里它们共享同一种「字母表」:只有 0 和 1。这不是工程师偷懒,而是物理、数学与工程在几十年里收敛出的最优解。

本篇解释:为什么两个状态就够?「一切」是如何从 0/1 堆出来的?

直觉:电灯开关与摩尔斯电码

一个物理开关只有两种稳定状态:通或断。早期电报用长短脉冲(点划)编码字母——本质仍是二元序列。现代 CPU 里,数十亿个纳米级开关(晶体管)以每秒 GHz(十亿次)级别翻转,组合成加法、比较、跳转;再往上,操作系统、浏览器、AI 推理栈,全是开关游戏的层层叠加。

图表加载中…

定义:比特与二进制

  • 比特(bit):信息单位,取值 {0,1}\{0, 1\}。
  • nn 位二进制数:可表示 2n2^n 种不同状态。例如 8 bit = 1 byte,可表示 28=2562^8 = 256 种模式(无符号整数 0–255)。
  • 香农信息论:在噪声信道上可靠通信,二元编码是 fundamental 的选择;实际信道也常用「两种可区分状态」作为物理载体(高/低电压、磁化方向 N/S、光有无)。

例子一:用 4 bit 表示 16 种颜色

早期 VGA 调色板用 4 bit 索引,24=162^4 = 16 种颜色。若扩展到 24 bit(真彩色),每像素 224≈16702^{24} \approx 1670 万种组合——三个 8 bit 通道(R、G、B)各 256 级。一张 1920×1080 图未压缩约 1920×1080×3≈6.21920 \times 1080 \times 3 \approx 6.2 MB,即约 4960 万 bit 的排列。

例子二:从 bit 到整数

十进制 42 的二进制是 00101010(8 bit 示意):

位权272^7262^6252^5242^4232^3222^2212^1202^0
值00101010

计算:32+8+2=4232 + 8 + 2 = 42。CPU 不「认识」十进制,加法器只对 bit 做进位逻辑。

# Python 内置就是二进制 ↔ 十进制转换
print(bin(42))      # 0b101010
print(int('101010', 2))  # 42
print((42).to_bytes(1, 'big'))  # b'*',存成 1 字节无符号

量化:需要多少 bit 表示「世界」?

对象粗算 bit 数
一个 ASCII 字符8 bit
一首 3 分钟 CD 音质音频(44.1 kHz × 16 bit × 2 声道)≈ 254 Mb
1 GB 文件8×1098 \times 10^9 bit
人类 DNA 全序列(约 30 亿碱基对,每碱基 ~2 bit 编码)≈ 6 Gb

关键结论:复杂度来自序列长度与解释规则,不是来自符号种类多。用 0/1 足够,因为我们可以用足够长的串编码任意有限信息(哥德尔、图灵机的基础思想)。

为什么不是三进制、十进制?

  • 物理:两种稳定态最容易在纳米尺度做快、省、可靠;多态电路噪声容限差。
  • 逻辑:布尔代数(与、或、非)在二元域上完备且实现简单。
  • 存储:三进制每个「位」存 log⁡23≈1.58\log_2 3 \approx 1.58 bit 信息,但硬件成本远高于 1.58 倍——历史上「三进制计算机」未成为主流。

从开关到逻辑门

非门(NOT):输入 0 输出 1,输入 1 输出 0——一条指令翻转 bit。与非门(NAND)是通用逻辑门:仅用 NAND 可拼出任意布尔函数。现代 CPU 里 数十亿晶体管 本质是 NAND/NOR 的组合;Intel Core i9 量级 ~100–200 亿 晶体管,其中大部分做 Cache 与互连,运算核心仍是 bit 级逻辑。

时钟把连续时间切成离散 tick:3 GHz 即每秒 30 亿 个周期,每个周期完成流水线中的一步。AI 芯片 H100 核心频率较低(~1.5 GHz)但并行线程数 10⁵ 量级,总吞吐靠宽度而非单核频率。

信息论视角:两个符号为何够用

香农 1948 年证明:二元信道上的编码效率可达信道容量。莫尔斯码、霍夫曼编码、算术编码、现代 LZ77,底层全是 0/1 序列。柯尔莫哥洛夫复杂度:字符串的最短描述长度;随机 noise 不可压缩,自然语言因冗余可压到原长 1/3–1/5(gzip 文本经验值)。

DNA 四碱基(A/T/G/C)可视为 2 bit/碱基;人类基因组 ~30 亿碱基对 ≈ 6 Gb 信息——与一张 Blu-ray 电影(25–50 GB 压缩视频)同量级,说明「生命蓝图」在信息论意义上并不比一部高清电影「更大」。

动手扩展:比特串表示任意有限对象

JSON {"name":"模","v":42} UTF-8 编码后是一串确定 bit;同一对象 canonical JSON(键排序固定)得到确定字节序列——哈希 SHA-256 的是比特,不是「意义」。Git commit、区块链、模型 weight checksum 都建立在此:改一个 bit,哈希雪崩变半。

这解释为何 模型权重 bit-identical 才 guaranteed 同行为;FP16 非结合律累加可能导致不同 GPU 上微差,但同一 checkpoint 文件 byte-for-byte 相同则 deterministic(不含随机采样)。

常见误区

  1. 「0 和 1 是数字本身」——在电路里它们是电压区间的约定(例如 0 V 附近 = 0,1 V 附近 = 1),不是哲学上的空无与存在。
  2. 「模拟世界无法数字化」——可以近似数字化:采样率越高、量化 bit 越多,误差越小,但永远有上限(奈奎斯特、量化噪声)。
  3. 「量子比特也是 0/1」——量子比特是叠加态,测量后才坍缩为 0 或 1;与经典 bit 不同,本篇讨论的是经典计算机。

动手试一试

数一数一段文本占多少 bit(UTF-8 下中文通常 3 byte/字):

text = "从 Bit 到 AGI"
raw = text.encode("utf-8")
print(f"字节数: {len(raw)}, bit 数: {len(raw) * 8}")
for i, b in enumerate(raw):
    print(f"  '{text[i] if i < len(text) else '?'}' -> {b:08b}")

想直接看一段文字在不同编码下逐字节长什么样?可以用这个在线小工具试试:文本编码查看器。

小结

世界在计算机里「只有 0 和 1」,是因为物理开关是二元的,而足够长的二元串可以编码一切有限离散信息。AI 模型、你的照片、操作系统,都是同一套字母表的不同「句子」。

下一篇:CPU 如何理解世界——硬件怎样把这些 bit 当成数字和指令来运算。

本页目录