计算机为什么只用
0 和 1 就能数数?
我们数数用 0 到 9 十个数字,计算机里却只有两种状态:通电和不通电。只有两种状态,怎么数到一百、一万、几十亿?往下滚,把一台会数数的机器拆开看。
我们数数用 0 到 9 十个数字,计算机里却只有两种状态:通电和不通电。只有两种状态,怎么数到一百、一万、几十亿?往下滚,把一台会数数的机器拆开看。
第 1 步,共 6 步
一块翻板,只有两种姿势。
向左倒是 0,向右倒是 1,没有第三种。往下滚,投一颗弹珠进去。
二进制 = 两种姿势 × 满二进一 × 越往下越值钱。
翻板只能倒左(0)或倒右(1),停不到中间。计算机里的一个开关、一个晶体管也一样:要么导通,要么不导通。这样只有两种状态的一格,叫一个比特(bit),也就是二进制的一位。
十进制是个位数到 9 再加 1,就清零并向十位进 1。二进制更早:一位到 1 再加 1,就清零并向下一位进 1。翻板上看得很清楚:碰到 1 就翻回 0、把弹珠往下传;碰到 0 就翻成 1、弹珠停下。所以二进制里的 10 读作"一零",等于 2,不等于十。
从 0 开始投 8 颗弹珠:第一块翻 8 次,第二块 4 次,第三块 2 次,第四块只翻 1 次。每往下一块,被碰到的次数少一半,所以它代表的数大一倍:1, 2, 4, 8, 16…。读数就是把倒向 1 的那几块的位值加起来:1011 = 8 + 2 + 1 = 11。
造一个能稳稳停在十个位置上的零件并不难,难的是在干扰下把它读准:电压一抖,十格的表就分不清 6 和 7。两格的表只问"偏左还是偏右",同样的干扰下余量大了 5 倍。计算机选二进制,不是因为只会两个数,而是因为两个数最不容易认错。
投弹珠看它进位,或者直接扳翻板、反着读出这个数。
按钮上排从左到右是第五块到第一块(最下面那块在最左边,和我们写数字的习惯一样:大的位在左)。键盘:空格 投一颗,1–5 扳第一到第五块。
扳出这个数:13
每多装一块翻板,能数的范围就翻一倍。范围是乘出来的,不是加出来的,所以不用多少块就能数得很大。
| 翻板(位) | 最多数到 |
|---|---|
| 4 | 15 |
| 8(1 个字节) | 255 |
| 32 | 4,294,967,295 |
| 64 | 约 1.8 × 10¹⁹ |