---
schema_version: "library-reader-v1"
source_type: "original_book"
title: "编码 隐匿在计算机软硬件背后的语言"
author: null
edition: null
publisher: null
year: null
isbn: "9787121181184"
library_document_id: "38270854-596f-4a26-8183-db8c968c6020"
source_sha256: "249786274d83909f0bddc34d77f81ed8f0b14d1eac8843c772a37a3ecbfe2cfc"
pdf_physical_page_count: 438
pdf_physical_page_index_base: 0
range_start: 420
range_count: 10
html_url: "https://workshop.closeclaw.top/api/ai/read/38270854-596f-4a26-8183-db8c968c6020?start=420&limit=10"
markdown_url: "https://workshop.closeclaw.top/api/ai/read/38270854-596f-4a26-8183-db8c968c6020.md?start=420&limit=10"
previous_url: "https://workshop.closeclaw.top/api/ai/read/38270854-596f-4a26-8183-db8c968c6020.md?start=410&limit=10"
next_url: "https://workshop.closeclaw.top/api/ai/read/38270854-596f-4a26-8183-db8c968c6020.md?start=430&limit=10"
---

# 编码 隐匿在计算机软硬件背后的语言

> 页码规则：PDF_PHYSICAL_PAGE_INDEX 是从 0 开始的权威文件物理页索引；PRINTED_PAGE 是页面中识别出的印刷页码，可能为空，二者不得混用。

## PDF_PHYSICAL_PAGE_INDEX=420 | PRINTED_PAGE=404

电子枪可以通过电驱动定位到显示器任何一个像素点上，之后可以直接画出直线或曲线。由于屏幕上的图像具有持久性，不会立即消失，这样就可以利用直线和曲线形成最基本的画面。

支持光笔（lightpen）是 SAGE计算机的一大特色，操作者使用光笔可以改变显示器上的图像。光笔这种设备很特殊，从外观上来看是一端连有电线的笔。如果使用与之配套的软件，计算机能够感知到光笔所指的屏幕位置，随即根据光笔的位移相应地改变图像。

光笔的工作原理是什么呢？如果是第一次看到它，即使是相关领域的技术专家，也会感到困惑。理解它的关键在于光笔并不发射（emit）光它所做的是检测（detect）光。对于CRT(无论采用的是光栅还是向量显示技术)，电子枪移动控制电路有两个最重要的功能，第一个功能是光笔一旦感知到电子枪射出的光，系统需要立即做出反应；第二个功能是系统在对其做出反应的过程中，需要确定出光笔指向的屏幕位置。

伊凡·苏泽兰（Van Sutherland，生于1938年）是最早预见到了计算机发展的一个全新领域，即交互式计算的人之一。在1963年，他演示了为SAGE计算机专门开发的名为“画板”（sketchpad）的程序。画板不仅可以将图像信息存放在存储器中，还可以把图像在屏幕上显示出来。你还可以使用光笔在显示器上画出图像并进行修改，与此同时，计算机会对光笔的轨迹一直进行跟踪。

还有一位早期交互式计算的预言家，那就是道格拉斯·恩格尔巴特(Douglas Engelbart，生于1925年)。他曾阅读过1945年万·布什发表的文章《思维之际》，巧合的是，五年之后他开始致力于研究计算机界面显示的新方法，并为之奉献毕生精力。20世纪60年代中期，当恩格尔巴特在斯坦福研究所（Stanford Research Institute）工作时，他重新思考并设计了输入设备，提出了用五股（five-pronged）键盘作为指令输入设备（这个设备并未普及)，另外还提出了一种配备轮子和按钮的设备，它的名字就是鼠标（mouse)。鼠标现在已经在全世界被广泛接受，它可以用来移动屏幕内的指针，还可以选择屏幕上出现的对象。

许多在早期热衷于交互式图形计算的科学家（但这里并不包括恩格尔巴特)，他们不约而同地聚集在了施乐（Xerox）公司，幸运的是，此时的光栅显示器已经变得经济实用。施乐公司在 1970年建立了帕洛阿尔托研究中心(Palo Alto Research Center，PARC)，中心的主要任务之一就是协助产品开发，以此来加快公司迈入计算机产业的步伐。PARC中最著名的预言家应该算是阿伦·凯（AlanKay，生于1940年），14岁那年，阿伦·凯在一篇罗伯特·海因莱因（RobertHeinlein）撰写的故事中，读到了万·布什提出的微缩胶片图书馆，阿伦·凯因此而深受启发，不久他构想了一种名为“Dynabook”的便携式计算机。

编码隐匿在计算机软硬件背后的语言

404

## PDF_PHYSICAL_PAGE_INDEX=421 | PRINTED_PAGE=405

PARC着手的第一个大的工程是阿尔托（Alto)，它的设计和制造完成于1972-1973年。从那个年代的标准去看，它是一个令人眼前一亮的产品。它采用落地式系统单元，配备16位处理器、2个3MB的磁盘驱动器、128KB的内存（最多可扩充到512KB)，还包括一个三按钮的鼠标。在Alto开发的时候，16位单芯片微处理器还未面世，所以它的处理器由将近200个集成电路组成。

Alto有许多与众不同的地方，视频显示器是其中一个方面。屏幕的大小和形状就像一张纸8英寸宽，10英寸高。它采用光栅成像技术，水平像素值为606，垂直像素值为808，算下来共有489,648个像素。其中每个像素占据1位存储空间，即每个像素取值只有两种：黑色或白色。视频显示的专用存储器容量为64KB，占用处理器的地址空间。

通过直接对视频显示存储器进行写操作，软件可以在屏幕上绘图或将不同字体、不同大小的文本显示在屏幕上。用户可以通过移动鼠标，在屏幕上对指针进行定位，还可以与屏幕上的对象进行交互。视频显示器与电传打字机在很多方面不尽相同，电传打字机顺序响应用户输入并按行将程序输出，而视频显示器的屏幕可以看做二维空间上的高密度的信息阵列，它还可以作为直接的用户输入源。

20世纪70年代晚期，Alto所搭配的程序逐渐凸显出很多新奇有趣的特点。比如窗口中可以容纳多个程序并同时显示在屏幕上。Alto的视频图像功能使得软件从文本的束缚中摆脱出来，使其可以更加真实地反映用户的想法。图形对象（Graphical objects，比如按钮、菜单，以及被称做图标的小图片）成为用户接口的一员。鼠标可以在多个窗口中进行选择、触发图形对象来执行程序功能。

软件的内涵就在于此，它的意义远不止仅有的用户接口，还包括与用户的亲密耦合。软件使得计算机所涵盖的应用领域变得更广，而不仅仅局限于简单的数字变换。软件之所以被设计出来，其最终目的是一引用道格拉斯·恩格尔巴特在1963发表的一篇著名论文的标题—《为了扩展人类的智慧》(For the Augmentation of Man's Intellect)。

25 图形化革命

405

## PDF_PHYSICAL_PAGE_INDEX=422 | PRINTED_PAGE=406

PARC 在 Alto 这个项目的开发成果预示着图形用户界面(Graphic User Interface,GUI)登上了历史的舞台。施乐公司并没有将Alto推向市场(价格定位3万美元以上绰绰有余)。从10年之后的今天来看，当时的Alto应该被包装成一种成功的消费产品并推向市场。

1979年，斯蒂夫·乔布斯（SteveJobs）带领苹果公司代表团对PARC进行了访问，在那里的所见所闻给他们留下了深刻的印象。而他们却花费了三年多的时间才推出具有图形界面的计算机，这就是在1983年1月推出的苹果莉萨（AppleLisa)，可惜这套系统在当时并不被看好。而一年以后推出的麦金托什机（Macintosh）却大获成功。

最原始的 Macintosh机配备有Motorola 68000微处理器、64 KB的只读存储器、128 KB的随机访问存储器、一个3.5英寸的磁盘驱动器（存储容量为400KB）、一个键盘、--个鼠标和一个视频显示器，显示器水平像素为512，垂直像素为342（仅为9英寸的CRT对角线长度)，像素总量为175,104个。每个像素赋予1位内存，只能显示黑白两色，这种配置约占 22 KB的视频显示存储器。

最原始Macintosh机硬件方面很精巧，但是可更新能力很差。1984年Macintosh操作系统的诞生对于Mac（即Macintosh机）意义非凡，它的出现使得Mac变得与众不同，当时我们把这样一个操作系统称为系统软件（System Software)，它就是现在著名的苹果操作系统(Mac OS)。

基于文本的单用户操作系统，如CP/M或MS-DOS，体积很小但是不支持扩展的应用程序接口（API）。关于这点在第22章进行过解释，在这些基于文本的操作系统中，没有为访问文件系统的应用程序提供一种渠道。MacOS这种图形化操作系统所占的空间比前面提到的这两种要大得多，其中包含了上百个API函数，每一个函数都用其功能来命名。

MS-DOS操作系统是基于文本的，如果要在屏幕上以电传打字机方式将文本显示出来，使用几个简单的API函数即可，但对于MacOS这种基于图形的操作系统，必须提供一种在屏幕上显示图像的途径，程序通过这条途径对图像进行显示。从理论上来讲，一个API函数完全可以胜任这项任务，函数的功能就是设置某个水平和垂直坐标下的像素的颜色。但在实际应用中，这种方法效率较低以至于严重影响到了图像显示的速度。

在这种需求下，如果操作系统可以提供一整套图形编程系统，那么其意义是重大的，这样的操作系统必须包含如下API函数：画线、画矩形、画椭圆（包括圆）以及画出文本。其中，线条可以是实线，可以是虚线，还可以是点线；矩形和椭圆可以具备不同的填充模式；字符可以具备不同字体和大小，还可以具备不同特效，如加粗和下画线等。图形编程系统负责规划如何将各式各样的图形对象以点阵集合的形式表示在显示器上。

编码—隐匿在计算机软硬件背后的语言

406

## PDF_PHYSICAL_PAGE_INDEX=423 | PRINTED_PAGE=407

如果程序在图形操作系统下运行，那么它们在显示器或打印机上画图这一过程中，使用的是一套完全相同的API。正因为如此，字处理程序在屏幕上显示出的文档，与打印出来而得到的纸质文档，看上去非常相似。这种特点称为“所见即所得”（简写为WYSIWYG）。这是喜剧演员弗雷普·威尔森（FlipWilson）在扮演杰拉尔丁（Geraldine）角色中的一句话，这句话也成了计算机领域的一个经典口号。

图形用户界面对用户而言是极具吸引力的，其中一个重要原因就是不同的应用程序使用着大致相同的工作原理，并且影响着用户的使用经验。这样一来操作系统就承担起了支持API函数的重任，而应用程序就可以利用这些API函数去实现用户界面的不同组件，如按钮和菜单等。GUI不仅是一种看上去简洁友好的用户环境，对于程序员而言，它还是一种重要的开发环境。程序员在开发新一代用户界面的时候可以不用从底层开始重新编写。

其实早在Macintosh问世之前，一些公司已经开始着手为IBMPC及其兼容机创建图形操作系统。这两种工作有一个显著的不同：苹果公司的硬件和软件都是由苹果公司自己设计的，因此开发人员的工作更加轻松。Macintosh系统软件只支持一种类型的磁盘驱动器、一种视频显示器，以及两种型号的打印机。而IBMPC的图形操作系统开发人员所面对的是许多不同的硬件，操作系统与不同的硬件之间需要同时兼容。

还有一点，虽然IBMPC问世的时间（1981年）较早，但MS-DOS应用程序已经在多数人心中根深蒂固，人们不愿意放弃它们。因此PC的图形操作系统必须具备一个重要的特性，那就是新的操作系统应该可以直接兼容MS-DOS应用程序，就好像MS-DOS应用程序是为新的操作系统专门设计的（Macintosh不兼容Apple Ⅱ系列软件，因为它们的微处理器型号不同)。

在1985年，迪吉多科研公司（Digital Research，CP/M的后续公司）推出了图形环境管理器（Graphical Environment Manager，GEM)；VisiCorp（推出 Visilalc 软件的公司）推出了VisiOn；与此同时微软公司发布了Windows1.0版本，作为一匹黑马，当时它也被很多人认为将会成为“视窗争夺战”的胜利者。然而直到1990年3月Windows3.0发布，

25 图形化革命

407

## PDF_PHYSICAL_PAGE_INDEX=424 | PRINTED_PAGE=408

Windows才真正受到大众瞩目。星星之火从那时开始燎原。在本书出版的2000年，约90%的小型计算机上使用的都是Windows操作系统。除了外观上的不同，Macintosh和Windows这两种操作系统所包含的API也有着天壤之别。

从原理上来分析，除了图形显示器，图形操作系统与文本操作系统相比，对硬件支持的要求并没有太多不同。从理论上来讲甚至硬盘驱动器都可以算是多余的：比如最初的Macintosh没有配备，Windows1.0也不需要。虽然大家都认为使用鼠标操作会更加方便，但其实Windows 1.0可以不需要鼠标。

有一点很容易想到，随着微处理器速度越来越快，内存和外存的容量越来越大，图形用户界面将更加深入人心。图形操作系统将会支持越来越多的特性，它们所占的存储空间也将越来越大。2000年左右的主流图形操作系统通常需要200MB的硬盘空间和32MB以上的内存。

在图形操作系统中，应用程序几乎都不使用汇编语言来开发。就拿早期的几款操作系统来看，Pascal 是Macintosh下的主流开发语言。在 Windows 操作系统中，C语言一统江湖。还有一个不得不提到的例子，那就是PARC向我们展示的一种全新的方法。大概从1972年开始，PARC的研究员着手开始研发一种名为Smalltalk的语言，这种语言嵌入了面向对象程序设计思想（Object-Oriented Programming)，也就是今天的 OOP。

从传统意义上来讲，高级程序设计语言会自然而然地区分出代码（比如以set、for、if这样的关键词开头的语句）和数据，即变量所代表的数字。这种区分毫无疑问来自于冯·诺依曼计算机的体系结构。在这样一种体系结构中，只有两种元素，一种是机器码，一种是机器码所操作的数据。

在面向对象的程序设计中，和冯·诺依曼计算机的体系结构所不同的是，对象(object)实际上是代码和数据的组合。在对象内部，与其相关联的代码决定了数据存在的意义，要理解数据的存储方式首先需要理解代码。对象如果需要与其他对象通信，则通过发送或接收消息（message）来实现这一过程，比如一个对象可以通过给另一个对象发送指令来获得相应信息。

在图形操作系统的应用程序开发过程中，面向对象语言可以算得上是一种很不错的工具，因为编程人员处理屏幕上的对象（如窗口和按钮等）的过程就是用户感知屏幕元素的过程。举例来讲，假设按钮是面向对象语言中的一个对象。屏幕上的按钮具备一定尺寸和位置，按钮上可以显示文本或小图标，这些都可以抽象成为与对象关联的数据。如果用户通过键盘或鼠标按下按钮，系统就会向按钮对象发送一个表示其被触发的消息，该按钮对象收到消息后就会调用与自身关联的代码进行响应。

编码—隐匿在计算机软硬件背后的语言

408

## PDF_PHYSICAL_PAGE_INDEX=425 | PRINTED_PAGE=409

小型计算机上最流行的面向对象语言是一种对传统的类似于ALGOL语言的扩展，C和Pascal就属于此类。由C扩展的面向对象语言就是赫赫有名的C++（我们可以回忆一下，两个加号放在一起等价于C语言中的自增操作)。C++的核心思想大部分来自于贝尔电话实验室（Bell Telephone Laboratories）的贾尼·斯特劳斯特卢普(Bjarne Stroustrup，生于1950年)，最开始C++是作为一种转换程序，它可以把编写的程序转换成C程序(但是转换出的C程序即难看又难以理解)。转换完成之后的C程序可以像普通程序一样编译。

其实，面向对象语言能做到的，传统语言也能做到。但是编程终究是人类发明的一种解决问题的活动，面向对象语言使得编程人员多了一种可选的解决方案，这种解决方案具备更加优越的组织结构。如果你想虽然困难重重一面向对象语言编写的一种程序，并使其在Macintosh和 Windows上都可以编译后运行，这是完全可以做到的。此类程序并不直接引用API，使用的是被称为 API函数的对象。Macintosh和 Windows使用两种不同的对象定义来编译程序。

许多在小型计算机上工作的编程人员已经逐渐不用命令行编译程序，而是使用集成开发环境（Integrated Development Environment，IDE)。这个环境里集成了所有需要的工具，而环境本身可以像其他图形应用程序一样运行，这样一来就大大简化了程序开发任务。还有一种称做可视化编程（Visual Programming）的技术被程序开发人员广泛利用，按钮及其他组件可以通过鼠标拖曳进行“排版”，从而达到在窗口交互设计的目的。

在第22章中我们一起讨论过文本文件。为了方便人们阅读，这类文件仅由ASCI字符组成。我们回想一下使用基于文本的操作系统的那个年代，文本文件是应用程序之间进行交流的理想媒介。它的最大优点是可检索性程序可以检索多个文本文件，然后确定它们中是否有文件包含某一字符串。但如果操作系统中有一种机制用来显示不同字体、大小，以及不同效果比如斜体、黑体和下画线，那么文本文件就不再适用了。很多字处理软件其实都会使用一种自己独有的二进制格式来存储文档。文本文件同样也不适用于图形信息。

25 图形化革命

409

## PDF_PHYSICAL_PAGE_INDEX=426 | PRINTED_PAGE=410

但我们要清楚的是，与文本相关的信息（比如，字体及段落版式)，都可以被编码，而且编码后并不影响其可读性。这种方案的关键是选用一个适当的转换字符来标识出这些信息。在Microsoft设计的富文本文件格式（rich text format，RTF）中，大括号“{”和“}”以及反斜杠“”封装了文本的格式信息，RTF也成为了应用程序间传递格式化文本的一种方法。

PostScript作为一种文本格式，将这种概念发挥到了极致。PostScript的设计者是Adobe系统的创始人之一——约翰·沃诺克（John Warnock，生于1940年)。PostScript是一种通用的图形编程语言，在2000年时主要用在高端计算机的打印机上，用于显示字符或图形。

随着硬件性能逐渐提升，价格日渐便宜，图形显示与个人计算环境的融合已是大势所趋。微处理器的处理速度越来越快，存储器价格越来越低廉，视频显示器及打印机分辨率不断增加，而且支持的颜色数目也成千上万，这一切大大推动了计算机图形界发展。

计算机图形也逐步产生了两种分支本章的前面曾提到过这两个词，当时是为了区分图形视频显示器—这两个分支就是矢量和光栅。

矢量图形（vectorgraphics）在一些算法的帮助下，利用直线、曲线及填充区域生成图形。这也正是计算机辅助设计（Computer-Assisted Drawing，CAD）所应用的领域。矢量图形在工程和体系结构设计中有着十分重要的作用。矢量图形一般转化为图元文件(metafile)格式以存放到文件中。图元文件是由生成矢量图形的一系列绘制命令的集合组成的，这些命令通常已经被编码为二进制形式。

矢量图形的主要工具就是直线、曲线及填充区域。如果你想设计桥梁，使用矢量图形来实现将很简单，但如果要显示桥梁的实际结构，矢量图形就显得无能为力了。对于现实世界里的一副桥梁的整体结构图，用矢量图形来表示将会很复杂，而且困难重重。

光栅图形（也称做位图），就是为了解决这一问题应运而生的。位图（bitmap）将图像以矩阵阵列的形式进行编码，阵列中的一个单位对应着输出设备上的一个像素点。就像视频显示器一样，位图是一种空间上的概念（可以称其具有分辨率)，其图像的宽度和高度都以像素为单位来表示。位图也具备色深（也可叫做颜色分辨率/颜色深度）的概念色深是指每一个像素被赋予的比特数。位图中每个像素被赋予的比特数相同。

尽管位图从表现形式上看是二维的，但其本身的存储形式却是一串连续的字节——通

编码隐匿在计算机软硬件背后的语言

410

## PDF_PHYSICAL_PAGE_INDEX=427 | PRINTED_PAGE=411

常从最顶端1行像素开始，紧跟着的是第2行、第3行，等等。

有些位图产生于图形操作系统设计的绘制程序，它们都是由某个操作者利用这些程序“手工绘制”出来的，还有一些位图是由计算机代码通过某种算法产生的。如今很多现实中的场景都利用位图来表示(比如数码照片)，要把现实世界的图像输入到计算机中，可以借助一些不同的硬件，这类设备一般统称为电荷耦合器（charge-coupled device，CCD)，它是一种在光照下会起电的半导体器件。每个像素都需要一个CCD单元来进行采样。

这些设备中最原始的可以算是扫描仪（scanner）了，其原理和影印机类似，都是利用一行CCD扫过需要复印的图像的表面，比如照片。由于光感度不同，不同区域CCD累积的电荷数也不同。扫描仪的配套软件把图像转换成位图存放在文件中。

视频摄像机利用二维CCD单元阵列捕捉图像。通常被捕捉到的图像存放在录像磁带上。但其实视频输出可以直接交给视频帧采集器（videoframegrabber）去处理，它的工作原理是把模拟信号转换成像素值阵列。帧采集器可以收集通用的视频源，如录像机(Video Cassette Recorder，VCR)或激光影碟机(Laser Disc Player)，甚至可以用于有线电视机机顶盒。

近几年，数码相机的价格已逐渐降低到了家庭用户可以承担的水平，它们从外观上来看和一般相机几乎一样。但数码相机并不使用胶片，而是使用CCD阵列来捕捉图像并直接将其转移到相机的存储器中，之后在适当的时候转储至计算机中。

图形操作系统通常可以将位图文件以某种格式进行存储。Macintosh 系统采用Paint格式，之所以叫这个名字是参考了创建这种格式的MacPaint程序（Macintosh的PICT格式同时支持位图和矢量图形，而且是它们的首选格式)。Windows里的默认的格式是BMP，位图文件通常以它作为扩展名。

位图文件可能很大，如果有方法可以让它们变小一些那就再好不过了。这种需求催生了计算机科学中的数据压缩（DataCompression）这一全新领域。

假设我们正在处理一幅每个像素占3位的图像，这种图像在本章前面曾讲过。这张图片上出现的画面是一片天空、一栋房子和一块草坪。因此，图片中可能有大片的蓝色和绿色。很可能位图的最上面一行出现了72个蓝色像素。如果有一种方法可以表示蓝色像素连续且重复了72次，那么通过这种方法表示的位图文件将会比原先的小很多。这样的压缩方法称为游程长度编码(Run-Length Encoding)，即 RLE。

25 图形化革命

411

## PDF_PHYSICAL_PAGE_INDEX=428 | PRINTED_PAGE=412

通常办公室的传真机采用的就是RLE压缩方法，压缩过程一般在传真机通过电话线传送图像之前。由于传真机展现出的图片都是黑白两色，没有灰度和彩色，所以通常像素值都会有很长串的白色区域，适合使用RLE压缩。

这十多年里风光无限的位图文件格式是图形交换格式（Graphics Interchange Format）即GIF，由计算服务（CompuServe）公司于1987年开发。GIF文件所采用的压缩技术称为 LZW，LZW 源自其三位创建者的名字：Lemplel、Ziv 和 Welch。LZW 比 RLE 更加强大，因为它所考虑的是像素值的模式（patterns)，而RLE针对的是具有相同值的像素串。

RLE和LZW都属无损(lossless)压缩技术范畴，因为可以从压缩数据中重新生成完整的初始文件。专业一点的说法是，压缩过程是可逆的（reversible)。可逆压缩方法并不适用于所有类型的文件，这点不难证明。在某些情况下，采用这些方法“压缩”后的文件比初始文件还要大！

近几年来看，有损（lossy）压缩技术大行其道。有损失的压缩是不可逆的，这是由于部分原始数据在压缩过程中被丢弃了。有损压缩技术不应该用于电子报表或文字处理文档，因为在这些重要文档里面少一个数字或者字母都会“失之毫厘，谬以千里”。但对于压缩图像，这些损失还是可以接受的，部分数据的损失不会使图片的整体效果有太大的变化。这就是为什么有损压缩技术的思想起源于心理视觉的原因，心理视觉领域所探究的是人的视觉，并根据心理因素确定人们所看到的景象中哪些比较重要而哪些不重要。

在JPEG中，人们使用了一系列具有重大意义的位图有损压缩技术，。JPEG代表的是联合图像专家组(Joint Photography Experts Group)，它涵盖了几种压缩技术，其中一些是无损的，另一些是有损的。

把图元文件转换成位图文件的方法很简单。这是由于视频显示存储器与位图在概念上保持一致。如果程序能把图元文件画在视频显示存储器中，则它也能在位图上画出图元文件。

但从位图文件到图元文件的转换却不那么容易，如果位图文件过于复杂甚至会导致无法转换。为了解决此类问题，人们发明了一项技术，那就是光学字符识别（Optical

编码隐匿在计算机软硬件背后的语言

412

## PDF_PHYSICAL_PAGE_INDEX=429 | PRINTED_PAGE=413

CharacterRecognition)，或简称为OCR。对于位图上出现的一些字符(来自于传真机，或来自于页面扫描)，如果需要转换成ASCII码，那么OCR就会派上用场。OCR软件会对比特流进行模式识别，然后确定其代表的字符。由于算法的复杂性，OCR软件并不能保证百分之百准确。虽然不很准确，但是OCR软件一直尝试将手写的字符也转换成ASCI码字符。

位图和图元文件都是数字化的可视信息。同理，音频信息也能转换成比特和字节。

随着1983年激光唱片（compactdisc）的问世，数字化音响掀起了一轮消费狂潮，它同时也成为了最成功的电子消费品案例。CD是由飞利浦和索尼公司联合开发出的产品，一张直径为12cm的CD可存储74分钟的数字化声音。而这个74分钟的时长因为贝多芬的第九交响曲（Beethoven's Ninth Symphony）刚好可以存储在一张 CD上。

CD 中声音信息采用的编码技术被称为脉冲编码调制技术(Pulse Code Modulation)，简称为PCM。名字听起来有点故弄玄虚，但从概念上讲PCM其实是一种很简单的过程。

振动是声音之源。人们发出的声音来源于声带的振动，大号的声音也来自于振动，森林里的树倒下的声音归根结底也是振动，还有很多例子，它们的振动来源于空气分子的移动。空气在被推拉的过程中，有时压缩有时放松，有时向后有时向前，这个过程每秒钟可以达到成百上千次，最终使耳膜产生振动，从而我们能够听到声音。

声波可以被模拟，一个成功的例子就是1877年爱迪生发明的第一台电唱机，它利用锡箔圆桶表面上的隆起和凹陷部位录制和播放背景音乐。直到CD的出现，这种录制技术才发生了稍许变化，圆桶变成了光盘，锡箔变成了塑料。早期的电唱机是机械化的，但是后来，电子放大器被用来放大声音。声音可以通过麦克风上配备的可变电阻转换成电流，喇叭中的电磁铁又可以将电流转换为声音。

代表声音的电流与先前所讲过信号不同，本书之前讨论过的是在“连通—断开”之间跳变的1/0数字信号。声波的变化是连续的，因而产生电流的电压也是如此。在这里电流产生的目的是模拟（analog）声波。为了达到这个目的，我们使用了一种新设备，通常把它叫做模拟数字转换器（Analog To Digital Converter，ADC）—所有的功能集成在了一个芯片上—将模拟电压转换成二进制数表示。一定长度的数字信号将会被ADC所输出—通常长度为8、12或16个比特—它们组合在一起表明了电压的相对级别。如果

25 图形化革命

413

下一段：[继续读取](https://workshop.closeclaw.top/api/ai/read/38270854-596f-4a26-8183-db8c968c6020.md?start=430&limit=10)
