在 Besiege 里看惯了各种奇观:能把城墙砸穿的投石机,能自己走路的巨型机甲,能绕场一周的飞行器。但真正让我停下来反复研究的,不是任何“能打架”的机器,而是一类完全不干仗的作品。它由一堆齿轮、铰链和连杆组成,转起来没有任何攻击性,唯一的功能就是把两个数字加在一起。
我第一次看到“机械三进制计算机 全加器”这类项目记录时,第一反应不是“这很酷”,而是“为什么有人在物理沙盒游戏里造计算机,还要选三进制”。直到后来把全加器的真值表摊开、把机械结构的受力路径在脑子里过了一遍,才意识到:这不是游戏里的行为艺术,而是在最笨拙的环境里,重新验证最基础的计算原理。二进制只是因为电子工程方便而成为默认答案,但它在数学上从来不是唯一答案,在机械世界里甚至不是最自然的答案。
我不打算复刻某个具体作品的完整建造流程——原始信息里也没有给出细节——而是想围绕“三进制全加器”这个核心,把三件事讲清楚:它的逻辑到底长什么样;在 Besiege 这类物理沙盒里怎样变成机械;以及真正难住人的,为什么会是稳定性、时序和排查,而不是逻辑设计本身。
1. 在物理沙盒里造电脑,到底在解决什么问题
1.1 为什么加法是所有计算的起点
如果要在沙盒游戏里造一台计算机,最合理的第一步不是直接做一个能运行程序的完整设备,而是先做一个加法器。原因非常简单:计算机世界里几乎所有的运算都能归约到加法。
减法可以做“取负再相加”;乘法可以展开成多次加法;比较大小可以做一次减法再看结果正负;就连数据寻址,本质上也是在处理地址的加减。所以加法器不是计算机的“一个零件”,而是计算机最底层的算术单元。无论将来机器做得多么复杂,计算都是从加法开始的。
这也是为什么很多人研究这类项目时,都会从全加器起步。它小到足以验证整套思路,又难到能暴露所有工程问题。比起一上来就规划“多少位、多少寄存器”,把一个加法器老老实实跑稳,价值要大得多。
1.2 三进制不是复古,而是被跳过的一条技术路线
大多数人听到“三进制”的第一反应是:三个状态,那不就是 0、1、2 吗?其实这里有个关键区别。当代三进制计算机研究里更常使用的是“平衡三进制”,每一位的取值范围是 -1、0、1,而不是 0、1、2。
平衡三进制的核心优势在于对称性。用它表示正负数几乎是天然的:不需要符号位,负数就是每一位整体取反。比如 +1 和 -1 之间就是简单的镜像关系。而二进制里要表达负数,需要补码这套额外的转换规则。在数学上,平衡三进制本身就是一个完整的带符号数系统。
计算机历史上也确实出现过三进制计算机。1950 年代末,苏联莫斯科国立大学研制过一台基于平衡三进制的计算机 Setun,并且实际运行过。后来电子产业的发展完全倒向了二进制,三进制没有形成生态,但它始终不是理论幻想,而是一条真实存在过、因为工程惯性被跳过的主线。
还有一个信息论常识值得提:在表示效率上,信息密度最高的整数进制其实是 3,因为理论最优基数是自然常数 e,约为 2.718,离它最近的整数就是 3。二进制不吃亏是因为电子器件天然只有高低两个电平状态;可一旦把平台换成齿轮、铰链和连杆,局面就反转了——机械结构反而更容易构造出左、中、右三个稳定位置。这正是“在 Besiege 里造三进制计算机”这件事最大的意义:它逼着你在一个不默认二进制的物理环境里,重新思考计算的可能性。
2. 全加器的逻辑:从二进制到平衡三进制
2.1 二进制全加器到底做了什么
先回到最基本的二进制全加器。它有三位输入:A、B,以及来自低位的进位 Cin;输出有两位:和位 S 与进位 Cout。三个 0/1 输入相加,总和范围是 0 到 3。因为一位二进制只能表示 0 或 1,所以结果必须拆成“本位和”和“向高位进位”两部分。
| A+B+Cin 总和 | 和位 S | 进位 Cout |
|---|---|---|
| 0 | 0 | 0 |