《计算机科学概论(第12版)》—第1章1.4节用位模式表示信息

本节书摘来自异步社区《计算机科学概论(第12版)》一书中的第1章1.4节用位模式表示信息,作者【美】J. 格伦•布鲁克希尔(J. Glenn Brookshear) , 丹尼斯•布里罗(Dennis Brylow),更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.4 用位模式表示信息
在研究了位存储的技术后,现在来了解如何将信息编码为位模式。我们将集中学习一些流行的文本编码方法、数字数据编码方法、图像编码方法以及声音编码方法。其中每一个编码系统都可能会影响到典型的计算机用户。我们的目标是充分了解这些技术,以便知道应用这些技术的效果。

1.4.1 文本的表示
文本形式的信息通常由一种代码表示,其中文本中的每一个不同的符号(如英文字母和标点符号)均被赋予唯一的位模式。这样,文本就表示为一个长的位串,位串中的连续位模式表示的是原文本中的连续符号。

在20世纪的40年代和50年代,人们设计了许多这样的代码,并结合不同的设备使用,随之增加了不少通信问题。为了缓解这种情况,美国国家标准化学会(American National Standards Institute,ANSI,读作“AN–see”)采用了美国信息交换标准码(American Standard Code for Information Interchange,ASCII)。这种代码使用长度为7的位模式来表示大小写英文字母、标点符号、数字0~9以及某些控制信息(如换行、回车和制表符)。后来,ASCII码通过在每个7位位模式的最高端添加一个0,扩展为8位位模式。这个技术不仅使所产生的代码的位模式与字节型存储单元相匹配,而且还提供了128个附加位模式(通过给附加的位赋予数值1),可以表示除英语字母和关联的标点符号之外的符号。

美国国家标准化学会
 

美国国家标准化学会(ANSI)成立于1918年,是由一些工程师协会和政府机构联合创办的非赢利性联盟,致力于协调私人部门自发标准的发展。现在,ANSI成员中有1300多个企业、专业组织、行业协会和政府机构。ANSI的总部设在纽约,它是美国在ISO的代表。它的网站是http://www.ansi.org

其他国家的类似组织包括澳大利亚标准组织(Standards Australia)、加拿大标准委员会(Standards Council of Canada)、中国国家质量技术监督局(China State Bureau of Quality and Technical Supervision)、德国标准化学会(Deutsches Institut für Normung)、日本工业标准调查会(Japanese Industrial Standards Committee)、墨西哥标准指导委员会(Dirección General de Normas)、俄罗斯联邦国家标准和度量委员会(State Committee of the Russian Federation for Standardization and Metrology)、瑞士标准化协会(Swiss Association for Standardization)和英国标准学会(British Standards Institution)。
8位位模式的一部分ASCII码可见附录A。利用这个附录,我们可以将位模式

01001000 01100101 01101100 01101100 01101111 00101110
解码为报文“Hello.”,如图1-11所示。


18209f381eac8b2ca19090dafe3851e71a5161e5

国际标准化组织(International Organization for Standardization)简称ISO,这个简称来源于希腊语中的“isos”一词,意思是平等。ISO开发了大量的ASCII扩展,每种扩展都是针对某一主要语种设计的。例如,其中一个标准提供了表达大部分西欧语言文本所需的符号。在其128个附加模式中,有表示英磅和德语元音ä、ö、ü的符号。

ISO——国际标准化组织
 

国际标准化组织(常称为ISO)建立于1947年,是一个由各国标准化团体组成的世界范围的联合会。现如今,它的总部设在瑞士日内瓦,有100多个成员团体和许多通信成员。(一个通信成员通常是一个国家的标准化团体,这个国家还没有国家认可的标准化团体。这些成员不能直接参与标准的开发,但可以了解ISO的活动。)ISO的网站是http://www.iso.org
ISO扩展的ASCII标准在支持全世界多语言通信方面取得了巨大进展,但是仍有两个主要障碍。首先,扩展的ASCII中额外可用的位模式数不足以容纳许多亚洲语言和一些东欧语言的字母表。其次,因为一个特定文档只能使用一个选定标准中的符号,所以无法支持包含不同语种的语言文本的文档。实践证明,这两者都会严重妨碍其国际化使用。为弥补这一不足,Unicode在一些主要软硬件厂商的合作下诞生了,并迅速赢得了计算界的支持。这种代码采用唯一的21位模式来表示每一个符号。当Unicode字符集与Unicode转换格式8位(Unicode transformation format 8-bit,UTF-8)编码标准结合在一起时,原来的ASCII字符仍然可以用8位来表示,而像汉语、日语和希伯来语这样的语言所产生的数以千计的其他字符则可以用16位来表示。除了可以表示世界上所有常用语言所需的字符以外,UTF-8的24位或32位模式还可以表示比较鲜为人知的Unicode符号,为未来的扩展留出了充足的空间。

由一长串根据ASCII或Unicode编码的符号组成的文件常称为文本文件(text file)。区分下面两类文件很重要:一类是由称为文本编辑器(text editor,常简称为编辑器)的实用程序操作的简单文本文件;一类是由字处理程序(word processor),如微软的Word,产生的较复杂的文件。两者都是由文本材料组成的,但是,文本文件只包含文本中各个字符的编码,而由字处理程序产生的文件还包含许多表示字体变化、对齐信息和其他参数的专有代码。

1.4.2 数值的表示
当所记录的信息只有数值时,以字符编码的形式存储信息效率就会很低。为了了解其中的原因,让我们来看看数值25的存储问题。如果我们坚持用ASCII编码符号来存储,每个符号一个字节,那么总共需要16个二进制位。此外,用16个二进制位可以存储的最大数是99。不过,我们马上就可以看到,使用二进制记数法(binary notation),16个二进制位可以存储0~65535范围内的任何一个整数。因此,二进制记数法(或它的变体)被广泛应用于计算机存储器中数值数据的编码。

二进制记数法是一种数值表示方法,只使用数字0和1,区别于传统的使用数字0、1、2、3、4、5、6、7、8和9的十进制记数系统。我们将在1.5节中更详细地学习二进制系统,现在只需要初步了解该系统。我们来考虑一种老式的汽车里程表,它的显示轮只包含数字0和1,而不是传统的十进制数字0~9。里程表以全0读数开始,在汽车行驶的前几英里,最右方的滚动显示轮从0旋转至1;当这个1旋转回0时,会使其左边出现一个1,产生模式10;接着,右边的0旋转至1,产生模式11;现在,最右边的数从1旋转回0,使得它左边的1也旋转回0,这就使另一个1出现在第3位上,产生模式100。简言之,在我们驾驶汽车时,将看到下列顺序的里程表读数:

0000
0001
0010
0011
0100
0101
0110
0111
1000
这个序列包括了整数0~8的二进制表示。尽管这种计数技术有些冗长乏味,但是我们可以扩展它,发现16个1组成的位模式是可以表示数值65 535的,这就证实了我们的说法:0~65 535范围内的任何整数都可以利用16个二进制位进行编码。

由于它的高效性,数字信息通常使用某种形式的二进制记数法来存储,而不用编码符号。我们之所以说“某种形式的二进制记数法”,是因为上面描述的简单二进制系统只是机器里应用的若干数值存储技术的基础。本章后面会讨论一些二进制系统的变体。现在我们只需要知道,称为二进制补码(two’s complement)记数法(见1.6节)的系统通常用于存储整数,因为它提供了一种便利的表示负数和正数的方法。为了表示4frac{1}{2}或frac{3}{4}这样带有分数部分的数,我们还要使用一种称为浮点记数法(floating-point notation)的技术(见1.7节)。

1.4.3 图像的表示
图像的一种表示方法是:将图像解释为一组点,每一个点称为一个像素(pixel,是picture element的简写);然后,对每个像素的显示进行编码,整个图像就表示成了这些编码像素的集合,这个集合被称为位图(bit map)。这种方法很常用,因为许多显示设备(如打印机和显示器)都是基于像素概念操作的。因此,位图格式的图像更便于格式化显示。

位图中的像素编码方式随着应用的不同而不同。对于简单的黑白图像,每个像素由一个位表示,位的值取决于相对应像素是黑还是白。这是大多数传真机采用的方法。对于更加精致的黑白照片,每个像素由一组位(通常是8个)表示,这使得许多灰色阴影也可以表示出来。对于彩色图像,每个像素通过更为复杂的系统来编码。有两种方法很常用,其中一种是RGB编码,每个像素表示为3种颜色成分——红、绿、蓝,它们分别对应于光线的三原色。每一种颜色成分的强度一般是用一个字节来表示。因此,要表示原始图像中的一个单独像素,就需要3个字节的存储空间。

另一种替代简单RGB编码的方法是,使用一个“亮度”成分和两个颜色成分。在这种方法中,“亮度”成分被称为像素亮度,基本上就是红、绿、蓝三种颜色成分的总和。(事实上,它是像素中白光的数量,但是现在我们不需要考虑这些细节。)其他两种成分,称为蓝色色度和红色色度,分别由像素中的像素亮度与蓝或红光数量之间的差来决定。这3个成分合在一起就是再现这个像素所需要的全部信息。

利用亮度和色度成分进行图像编码这种方式的普及源自彩色电视广播领域,因为这种方法提供的彩色图像编码方式可以兼容老式黑白电视接收器。事实上,只需要利用编码彩色图像的亮度成分就可以制造出图像的灰度版本。

用位图表示图像的缺点在于,图像不能轻易调整到任意大小。基本上,放大图像的唯一途径就是变大像素,而这会使图像模糊。(这就是应用于数字照相机的“数字变焦”技术,与此相对的“光学变焦”是通过调整照相机镜头实现的。)

图像的另外一种表示方法,避免了这个缩放问题,将图像描述成了几何结构(如直线和曲线)的集合,这些几何结构可以用解析几何技术来编码。这种描述允许最终显示图像的设备决定几何结构的显示方式,而不是让设备再现特殊像素模式。这种方法被用在了当今的字处理系统中,用于产生可缩放的字体。例如,TrueType(由微软公司和苹果公司开发)是用几何结构描述文本符号的系统,而PostScript(由Adobe系统开发)提供了一种描述字符及更一般的图形数据的方法。这种表示图像的几何方法在计算机辅助设计(computer-aided design,CAD)系统中也很常见,用于在计算机屏幕上显示和操控三维物体的绘制。

许多绘图软件系统(如微软的画图工具)都允许用户用预先设定的形状(如矩形、椭圆形、基本线条等)画图,对于这些用户来说,用几何结构表示图像与用位图表示图像之间的区别是很明显的。用户只需从菜单中选择所需的几何形状,就可以用鼠标绘制出形状。在绘制过程中,软件保存了所画形状的几何描述。当鼠标给出方向后,内部的几何表示就被修改,再转化成位图形式显示出来。这种方法方便图像的缩放和形状的改变。然而,一旦绘制过程完成,系统就会去除基本的几何描述,仅保存位图,这意味着,再做其他修改需要经历冗长的一个像素接一个像素的修改过程。另外,一些绘图系统会将描述作为几何图形保存下来,并允许在之后进行修改。有了这些系统,就可以轻松地调整图形的大小,并可按各种尺寸显示清晰图像。

1.4.4 声音的表示
为了便于计算机存储和操作,对音频信息进行编码的最常用方法是,按有规律的时间间隔对声波的振幅采样,并记录所得到的数值序列。例如,序列0、1.5、2.0、1.5、2.0、3.0、4.0、3.0、0可以表示这样一种声波:它的振幅先增大,然后经短暂的减小,再回升至较高的幅度,接着又减回至0(见图1-12)。这种技术采用每秒8000次的采样频率,已经在远程语音电话通信中使用了许多年。通信一端的语音被编码为数字值,表示每秒8000次的声音振幅。接着,这些数字值通过通信线路被传输到接收端,用来重现声音。


ff660bc0a280f73368d742e863d97d06477b3f53

尽管每秒8000次的采样频率似乎是很快的速率,但它还是满足不了音乐录制的高保真需求。为了实现现在音乐CD重现声音的质量,我们需要采用每秒44 100次的采样频率。每次采样得到的数据要用16位的形式表示(32位用于立体声录制)。因此,录制成立体声的音乐,每一秒需要100多万个存储位。

乐器数字化接口(musical instrument digital interface,MIDI,读作“MID–ee”)是另外一种编码系统,被广泛用于电子键盘的音乐合成器、视频游戏声音,以及网站的辅助音效。MIDI是在合成器上编码产生音乐的指令,而不是对音乐本身进行编码,因此它避免了采样技术那样的大存储容量要求。更精确地说,MIDI是对什么乐器演奏什么音符以及持续时间进行编码。例如,单簧管演奏D音符2秒,可以编码为3个字节,而不必按照每秒44 100次的采样频率用两百多万个二进制位来编码。

简言之,可以把MIDI看作是对演奏者乐谱编码的一种方法,而不是对演奏本身编码。因此,MIDI“录制”的音乐在不同合成器上演奏时声音可能是截然不同的。

问题与练习

1.下面是用ASCII编码的一条消息,每个符号8位。它的含义是什么?(见附录A)

01000011 01101111 01101101 01110000 01110101 01110100 01100101
01110010 00100000 01010011 01100011 01101001 01100101 01101110
01100011 01100101
2.在ASCII码中,大写字母码和相应小写字母码之间的关系是什么?(见附录A)

3.用ASCII对下列语句编码:

  a. “Stop!” Cheryl shouted.

  b. Does 2+3=5?

4.描述一种在日常生活中能够呈现两种状态的设备,例如,旗杆上的旗帜,或者升起或者降下。给一种状态赋值1,另一种赋值0,请说明当以这样的位来存储时,字母b的ASCII码会怎样表示?

5.将下列二进制表示分别转化为相应的十进制形式。

  a. 0101     b. 1001    c. 1011   d. 0110     e. 10000   f. 10010

6.将下列的十进制表示分别转化为相应的二进制形式。

  a. 6     b. 13    c. 11       d. 18     e. 27       f. 4

7.如果每个数字采用每字节一个ASCII码的模式编码,那么3个字节可以表示的最大数字值是多少?如果采用二进制编码,那么又能够表示多大的数字值?

8.除十六进制记数法以外,另一种表示位模式的方法是点分十进制记数法(dotted decimal notation),其中每个字节由相对应的十进制数来表示,而且这些字节表示之间是用句点分开的。例如,12.5表示模式0000110000000101(12表示字节00001100,5表示字节00000101),而136.16.7表示模式100010000001000000000111。用点分十进制记数法表示下列位模式:

  a. 0000111100001111   b. 001100110000000010000000

  c. 0000101010100000

9.相对于位图技术,用几何结构表示图像有哪些优点?位图技术相对于几何结构又有哪些优点?

10.假如采用文中所讨论的每秒44 100次的采样频率,对1小时音乐的立体声录音进行编码。请问这段音乐编码的大小与CD的存储容量相比结果如何?

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值