什么是信息?从算盘说起
通俗的来说,计算机是用来处理信息的,包括对信息的存储、计算、传输等等环节。那什么是信息呢?这本身是一个很深刻的问题,从日常经验来看,今天的气温是信息,A股的指数也是信息。我们可以将这些信息都量化为具体的数字,而对信息的处理就变成了加减乘除等计算过程。所以接下来,我们的任务是发明一个工具,帮我们做这些计算。
较为年轻的读者们可能没见过算盘(我也没见过),这是在现代计算机发明前广泛使用的一种计算工具。它由一串串算珠构成,算珠的不同摆放方式用来表示不同的数字。图中,两排算珠中间那根横着的叫做梁。对于一串5株,原则上一共有6种排列方式,我们只考虑其中的5种,分别用来表示数字0-4:全部离梁代表数字0,4个靠梁1个离梁代表数字4。

算盘是真的能打得很响,不然也没有“算盘打得我都听见了”这句讥讽了
让我们来再简化一下:假设每根棒子上只有一个珠子,我们可以用它在棒子的一端表示0,在另一端表示1。这就是用一个具体的事物来表示0和1。有读者可能会想把这个东西改进一下:例如将棒子分成10等份,然后用珠子具体在哪个区域来分别表示数字0-9。第二种方法的好处是同样使用一根棒子,能表示的信息更多;但缺点也显而易见,我们需要对珠子的位置有更精细的操控才可以,不能像打算盘一样简单地拨来拨去,因此会严重影响计算效率。
如何造一个计算机?晶体管是关键
从这个先人的智慧结晶里面,我们可以获得一些启发:不使用具体的位置(比如靠梁的距离),而是只考虑简单的靠梁/离梁的情况来表示0和1。而在现代计算机中,我们是通过电路的电压表示信息,高电压用来表示1,低电压用来表示0。电压很容易测,接个电压表就行。现代计算机的基本元器件是一个叫做晶体管的东西(MOSFET),这个元器件大概是1959年正式实现的,由此开启了现代计算机飞速发展的时代。晶体管里面一个最重要的元件是PN结,它是由半导体材料制作的(这就是为什么半导体产业是互联网行业的基础),其特点是单向导电性:电压为正时电路导通,电压为负时电路断开。由此,我们可以通过控制晶体管的电压来决定电路是否导通,正如水龙头的开和关,由此实现对0/1的表示和控制。
当我们明白单个0/1如何对应一个晶体管之后,下一个问题就是怎么处理更大的数字。这个问题的回答依赖于二进制数:以3位0/1为例,二进制数和我们常用的数字之间的对应规则可以概括如下(和八卦图案的三爻是类似的):
000→0, 001→1, 010→2, 011→3,
100→4, 101→5, 110→6, 111→7.
由此我们通过堆积位数,获得更大的数字。一位0/1称为一个比特(bit),在计量信息大小时,常用Byte(= 8 bits)作为基本单位,1KB = 1024 Bytes,1MB = 1024 KB,1GB = 1024 MB。大家常说手机电脑内存多少MB多少GB,就指的是它包含的比特数量。
但是,这里涉及到一个工程上的难点:一个比特就需要一个晶体管,那1GB的数据大约需要一百亿个(10个0)晶体管,而这些晶体管需要全部集成在一个小小的芯片上,因此每个晶体管电路的尺寸都在纳米级别。平时我们所谓的3纳米、5纳米芯片,就是指其中一个晶体管电路的尺寸。这个尺寸的电路可不是电工师傅能做的,需要依赖于高精度光刻机,通过光线在芯片上进行电路的刻蚀,因此是芯片制造工艺中最重要的环节,也是我们被卡脖子的难题之一。
逻辑门与计算——还记得三体里面的人形计算机么
最后简单介绍一下现代计算机是如何进行计算的。简单来说,我们是通过一些逻辑门对比特进行操作,以实现二进制数的加减乘除。最基本的逻辑门包括与门(and)、或门(or)、非门(not)和异或门(xor)。从英文名顾名思义,非门的意思是翻转一个比特
0→1, 1→0
与门的意思是两者同时为真时结果为真
00→0, 01→0
10→0, 11→1
或门的意思是只要两者其一为真时结果为真
00→0, 01→1
10→1, 11→1
而异或门的规则如下
00→0, 01→1
10→1, 11→0

4种逻辑门的电路表示符号,学过数字电路的同学大概不会陌生
可以证明,所有的二进制运算都可以用这些基本的逻辑门来完成。而在底层的晶体管结构里面,这些逻辑门则是通过将电路的电压进行高低之间的转换来完成(回忆一下,高电压代表1,低电压代表0,因此只要对电路进行操控,就可以实现0和1之间的转换),这一过程涉及到许多电路元件,例如二极管、三极管等等。最终,我们可以搭建出一个完整的计算机,并执行各类复杂的运算。大家感兴趣的话,可以去搜一下b站上非常火的一个视频《1000人大型实验,复刻三体人列计算机,科幻场景走进现实!》,很震撼,但同时也体现了这件事情是不可能仅通过人力完成:地球上只有70亿人,按照刚才的估计最多能用来存储和计算不到1GB的数据量,大概和20年前的电脑性能差不多