位值制:一切高效计算的地基
为什么竖式能算巨大的数?秘诀藏在「位值制」里:同一个数字,站的位置不同,身价就不同。在 555 里,三个 5 分别代表 500、50、5。罗马数字没有位值制,3888 要写成 MMMDCCCLXXXVIII——乘法几乎没法做。
位值制加「0」这个补位符号(印度人的伟大发明,经阿拉伯传入欧洲),带来了连锁反应:
- 竖式加法从右往左算:因为右边是低位,进位才能「向上传递」。这不是规定,是位值制的必然。
- 竖式乘法 = 拆位相乘再相加:36 × 12 被拆成 36×10 和 36×2,只用九九表就能算任意大的数。
- 计算机也吃这一套:第 1 课讲过的二进制,正是「逢二进一」的位值制——现代计算机就是一台超级位值制计算器。
36 × 12 的竖式,本质是两次「乘一个数」再加起来:(36 × 2) + (36 × 10)。看起来是「背口诀按格式算」,底下全是「拆成好算的部分」这个思想——这个思想有个现代名字:分治。
乘法表与算法:先解决「小问题」
九九乘法表是人类最早的「速查缓存」:把 45 个基础乘积提前背熟,之后一切大数乘法都分解成查表。注意这个结构——把大问题拆成大量小问题,小问题预先解决。它和今天程序员的做法一模一样:把常用计算结果存起来(缓存),用空间换时间。
再进一步看「乘法」本身的进化:
| 方法 | 怎么算 | 聪明在哪 |
|---|---|---|
| 连加 | 36 × 12 = 36+36+…+36(加 12 次) | 直观,但工作量随数字增大直线暴涨 |
| 九九表 + 竖式 | 拆位、查表、错位相加 | 工作量只随「位数」增长,几乎不随数值大小变 |
| 格子乘法 / 快速乘法 | 分块、交叉相乘 | 位数极长时进一步省力,是现代大数运算的基础 |
「工作量随规模如何增长」——这正是大O复杂度思想(详见我们姊妹站计算机中的数学)。运算方法的历史,就是一部「复杂度优化史」。
对数:把乘法降级成加法的魔法
1614 年,纳皮尔发明对数,震惊欧洲数学界。它的魔法建立在一句话上:「同底指数相乘,指数相加」——乘法可以被加法代替。
想算 458 × 912?查表:458 ≈ 10^2.66,912 ≈ 10^2.96。两个数相乘,指数直接相加:2.66 + 2.96 = 5.62,查回 10^5.62 ≈ 417,700。两次查表加一次加法,替代了一次大数乘法。在没有计算器的年代,这把天文学家拉普拉斯口中「延长了天文计算寿命」的工具送到了每个人手里。
对数尺(滑尺)曾统治工程师口袋三百年;今天它退居幕后,但思想无处不在:地震的里氏震级、声音的分贝、酸碱度 pH 值,全是对数刻度——数字每加 1,真实量翻 10 倍。对数的思想还反过来催生了「指数爆炸」的直觉:复利、人口增长、算法复杂度,都活在对数的另一端。
凑整、估算与验算:老练计算者的三件套
真实的计算高手很少硬算,他们的功夫在「算之前」和「算之后」:
- 凑整再修正算 198 × 7,先算 200 × 7 = 1400,再减去 2 × 7 = 14,得 1386。把难看的数先掰弯成好算的数。
- 先估数量级正式动笔前先估个大概:712 × 318 大约是 700×300 ≈ 21 万。如果算出 2.1 万或 210 万,立刻知道错了——估算是最便宜的保险。
- 换条路验算除法用乘法回验、加法换顺序重加。同一件事用不同方法再走一遍,两边对上才算数——这就是「交叉验证」思想,今天的科学计算和区块链都在用同一招。
要——但练的不是算得快,而是「数感」:对数量级、合理性、可能错误的敏感。计算器替你算数字,替不了你判断「这个数字对不对劲」。金融灾难的一半故事,都始于一个没人觉得不对劲的错误数字。
运算方法的共同心法
拆开竖式、九九表、对数、凑整、验算这五件工具,能看到同一个内核反复出现:
- 分解:把大问题拆成小问题(拆位、拆因数);
- 降级:把难的运算换成简单的运算(乘法→加法);
- 预存:把重复劳动提前解决(乘法表、对数表);
- 校验:换条路再走一遍(估算、回验)。
这四招不仅是运算心法,也是一切算法设计的底层思想——从古代算盘到今天的 AI 芯片,变的只是执行者,不变的是这些「聪明的套路」。
常见疑问
为什么中国孩子的九九表只到「九九八十一」?
因为十进制下,任何两位数乘法都能拆成「查表 + 错位相加」,45 个口诀就是完备的基础件。这套「最小完备缓存」的设计极优雅——欧洲曾用过 12×12 甚至更大的表,反而笨重。
对数具体是什么?不背定义能懂吗?
能:对数就是「问 10 得自乘几次才等于这个数」。100 = 10²,所以 100 的对数是 2;5000 ≈ 10³·⁷,所以对数约 3.7。它把「数有多大」翻译成「10 的指数是多少」,乘法于是变成指数相加。
计算机算数也用这些老方法吗?
思想一致、实现升级:加法器就是竖式加法的电路版(逐位相加 + 进位);大数乘法用分治思想优化的快速算法;浮点数则把「科学计数法」搬进了硬件。老方法没有死,只是换了躯壳。