← everywhy
计算机 · 二进制

计算机为什么只用
0 和 1 就能数数?

我们数数用 0 到 9 十个数字,计算机里却只有两种状态:通电和不通电。只有两种状态,怎么数到一百、一万、几十亿?往下滚,把一台会数数的机器拆开看。

↓ 慢慢往下滚 ↓

第 1 步,共 6 步

一块翻板,只有两种姿势。

向左倒是 0,向右倒是 1,没有第三种。往下滚,投一颗弹珠进去。

回放:这台机器拆出了哪几个零件?

二进制 = 两种姿势 × 满二进一 × 越往下越值钱。

1

一块翻板就是一位

翻板只能倒左(0)或倒右(1),停不到中间。计算机里的一个开关、一个晶体管也一样:要么导通,要么不导通。这样只有两种状态的一格,叫一个比特(bit),也就是二进制的一位。

2

满二进一

十进制是个位数到 9 再加 1,就清零并向十位进 1。二进制更早:一位到 1 再加 1,就清零并向下一位进 1。翻板上看得很清楚:碰到 1 就翻回 0、把弹珠往下传;碰到 0 就翻成 1、弹珠停下。所以二进制里的 10 读作"一零",等于 2,不等于十。

3

越往下,一块翻板代表的数越大

从 0 开始投 8 颗弹珠:第一块翻 8 次,第二块 4 次,第三块 2 次,第四块只翻 1 次。每往下一块,被碰到的次数少一半,所以它代表的数大一倍:1, 2, 4, 8, 16…。读数就是把倒向 1 的那几块的位值加起来:1011 = 8 + 2 + 1 = 11。

4

两种状态,最不容易认错

造一个能稳稳停在十个位置上的零件并不难,难的是在干扰下把它读准:电压一抖,十格的表就分不清 6 和 7。两格的表只问"偏左还是偏右",同样的干扰下余量大了 5 倍。计算机选二进制,不是因为只会两个数,而是因为两个数最不容易认错。

轮到你:五块翻板的实验台

投弹珠看它进位,或者直接扳翻板、反着读出这个数。

按钮上排从左到右是第五块到第一块(最下面那块在最左边,和我们写数字的习惯一样:大的位在左)。键盘:空格 投一颗,1–5 扳第一到第五块。

扳出这个数:13

所以:几块翻板,能数到多大?

n 块翻板 → 能数 0 到 2ⁿ − 1

每多装一块翻板,能数的范围就翻一倍。范围是乘出来的,不是加出来的,所以不用多少块就能数得很大。

翻板(位)最多数到
415
8(1 个字节)255
324,294,967,295
64约 1.8 × 10¹⁹