1.2.2 数字化
所有这些与计算机有什么关系呢?事实证明,数据的模拟表示对于计算机来说是难以处理的。模拟系统类型是如此丰富多样,以至于创造一个能理解全部这些系统的通用计算设备几乎是不可能的。例如,创造一台能测量水银体积的机器与创造一台能读唱片沟槽的机器是完全不同的任务。此外,计算机还需要能高度可靠和准确地表示某些类型的数据,比如数字数据集和软件程序。数据的模拟表示难以精确测量,而且精度会随着时间衰减,在被复制的时候可能失去保真度。计算机需要一种方式来表示所有类型的数据,且格式能被准确地处理、存储和复制。
如果我们不想把数据表示为可能无限变化的模拟值,那么该怎么办呢?我们可以采用数字方法。数字系统把数据表示成一系列符号,其中每个符号都代表一组有限值中的一个。现在,这个描述听起来有点格式化和令人困惑,这里没有深入讲解数字系统的理论,而是解释这在实践中意味着什么。在几乎所有的现代计算机中,数据都被表示为两个符号的组合,这两个符号就是0和1。虽然数字系统可以使用两个以上的符号,但是增加符号会提高系统的复杂度和成本。只采用两个符号能简化硬件并提高可靠性。大多数现代计算机中的所有数据都是用0和1的序列来表示的。从此刻开始,当谈及数字计算机时,你可以认为我说的系统只处理0和1,而不是其他一些符号集。
有一点需要强调:计算机上所有的数据都是以0和1的形式存储的。你最近用智能手机拍的一张照片也是如此吗?是的,设备把这张照片存储为0和1的序列。从网上下载的歌曲呢?0和1的序列。在计算机上编写的文档呢?0和1的序列。安装的app呢?也是0和1的序列。访问的网站呢?还是0和1的序列。
我们只用0和1便可表示自然界中的无限值,这听起来似乎是有局限性的。怎么把音乐录音或精细的照片精简为0和1呢?很多人发现,用有限的“词汇”表示复杂的思想是违反直觉的。这里的关键是数字系统使用的是0和1的序列。例如,一张数字照片通常是由数百万个0和1组成的。
那么,这些0和1到底是什么呢?你可能会看到其他用来描述这些0和1的术语,如假和真、关和开,以及低和高等。这是因为计算机不能按字面意思来存储数字0或1。它存储的是一系列的项(entry),每一项都只有两种可能的状态。每一项都像电灯的开关一样,要么开,要么关。实际上,这些1和0的序列是以各种方式存储的。在CD或DVD上,0和1是以盘片上凸起(0)或平坦(1)的形式表示的。在闪存驱动器中,1和0以电荷的形式存储。硬盘驱动器通过磁化与否来存储0和1。正如你将在第4章看到的,数字电路用电平来存储0和1。
在我们继续介绍后面的内容之前,关于“模拟”最后需要注意的一点是:它通常只用来表示“非数字”。例如,工程师可能会说“模拟信号”,其含义是信号是连续变化的,不符合数字值特性。换句话说,它是非数字信号,但并不一定代表其他东西的模拟。所以,当你看到“模拟”这个词的时候,要考虑到它并不一定总是你想的意思。