编码的奥秘.pdf

上传人:小****库 文档编号:2917566 上传时间:2020-05-22 格式:PDF 页数:282 大小:19.03MB
返回 下载 相关 举报
编码的奥秘.pdf_第1页
第1页 / 共282页
亲,该文档总共282页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《编码的奥秘.pdf》由会员分享,可在线阅读,更多相关《编码的奥秘.pdf(282页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、 f i l e : / / / C| / D o c u m e n t s a n d Se t t i n g s / A d m i n i s t r a t o r / 桌面/ 编码的奥秘/ 目录. T XT 目 录 译者序 译者简介 第1章 电筒密谈 1 第2 章 编码与组合 5 第3章 布莱叶盲文与二元编码 9 第4章 手电筒剖析 13 第5章 绕过拐弯的通信 19 第6 章 电报机与继电器 2 5 第7 章 十进制记数法 30 第8 章 其他进位制记数法 36 第9章 二进制数 48 第10 章 逻辑与开关 6 1 第11章 逻辑门电路 7 3 第12 章 二进制加法机 94

2、 第13章 如何实现减法 10 3 第14章 反馈与触发器 112 第15章 字节与十六进制 131 第16 章 存储器组织 138 第17 章 自动操作 150 第18 章 从算盘到芯片 17 3 第19章 两种典型的微处理器 18 8 第2 0 章 A SCII 码和字符映射 2 0 7 第2 1章 总线连接 2 18 第2 2 章 操作系统 2 32 第2 3章 定点数和浮点数 2 43 第2 4章 高级语言和低级语言 2 52 第2 5章 图形化革命 2 6 2 f i l e : / / / C| / D o c u m e n t s a n d Se t t i n g s /

3、A d m i n i s t r a t o r / 桌面/ 编码的奥秘/ 目录. T XT 2 0 0 7 -9-2 12 : 2 1: 0 8 该书下载自-书部落-分享计算机经典巨著!-!仅供试看_ f i l e : / / / C| / D o c u m e n t s a n d Se t t i n g s / A d m i n i s t r a t o r / 桌面/ 编码的奥秘/ 内容简介. T XT 本书用大量的篇幅讲述了与计算机原理相关的各种编码方法,并通过数字逻辑电路以及存储器,微处理器的形成,组织及发展阐述了编码的实现。本书还涉及到计算机系统,编程语言的发展,甚

4、至对计算机图形化的相关技术也给了一个全面的描述。阅读本书,相信您会从它图文并茂的编排组织,通俗风趣的语言文字,广泛丰富的背景知识中体会到作者超凡的智慧和深邃的学问。 f i l e : / / / C| / D o c u m e n t s a n d Se t t i n g s / A d m i n i s t r a t o r / 桌面/ 编码的奥秘/ 内容简介. T XT 2 0 0 7 -9-2 12 : 2 1: 0 9 该书下载自-书部落-分享计算机经典巨著!-!仅供试看_ f i l e : / / / C| / D o c u m e n t s a n d Se t

5、t i n g s / A d m i n i s t r a t o r / 桌面/ 编码的奥秘/ 译者序. T XT 译 者 序 译 者 序 初看本书,颇感疑惑。细细读来,仿佛作者在娓娓讲述一个故事,向我们展开一幅幅有关计算机奥妙的图画。 要学习计算机的基础知识,真正理解计算机的组成原理和工作过程往往是一件令人头痛的事,即使对计算机专业的学生来说,也并不轻松。 本书无疑将会成为你的好朋友。随着作者的思路,你将轻松自如地了解到计算机软件、硬件的形成及发展,不知不觉地融入到计算机世界中。本书不仅讲述关于编码的知识,而且还深入浅出地涵盖了计算机软硬件的工作原理及发展过程。无论是初学者还是专业人士

6、,读过本书,都会对计算机的奥秘有新的认识和了解。 本书第115章由伍卫国和孙燕妮翻译,第16 2 5章由王宣政翻译,伍卫国、王宣政负责全书的审校工作。 感谢机械工业出版社华章公司,感谢李昕、柳杨华、刘伟娜、曹景镇、周盛、王梅、李静等在本书初译及文稿录入中所做的工作。 很高兴能将本书的中译本奉献给大家。由于译者水平有限,不当之处敬请读者批评指正。 本书的参考书目在W o r l d W i d e W e b 网站 h t t p : / / w w w . c h a r l e s p e t z o l d . a m / c o d e 中。 伍卫国、王宣政 于西安交通大学 2 0 0

7、0 年5月12 日 f i l e : / / / C| / D o c u m e n t s a n d Se t t i n g s / A d m i n i s t r a t o r / 桌面/ 编码的奥秘/ 译者序. T XT 2 0 0 7 -9-2 12 : 2 1: 0 9 该书下载自-书部落-分享计算机经典巨著!-!仅供试看_ 基础的重要性(程序员之路) 学习编程有几年了,感觉走了不少弯路,而不少的学弟学妹又在重蹈我当初的覆辙,不免有些痛心。最近在网 上也看了许多前辈们的经验建议,再结合自己的学习经历在这里谈谈基础的重要性,希望帮助大家少走些弯 路。 什么是基础呢?就是要

8、把我们大学所学的离散数学,算法与数据结构,操作系统,计算机体系结构,编译原理 等课程学好,对计算机的体系,CPU本身,操作系统内核,系统平台,面向对象编程,程序的性能等要有深层次的掌握。 初学者可能体会不到这些基础的重要性,学习jsp,donet,mfc,vb的朋友甚至会对这些嗤之以鼻,但是一开始没学 好基础就去学jsp或donet会产生很坏的影响,而且陷入其中不能自拔。 我上大二的时候还对编程没什么概念,就上了门C+也不知道能干什么,老师说MFC也不知道是什么东西, 看别的同学在学就跟着学了,然后就了解到.net,j2ee,php是什么了,就觉得软件开发就是用这些了,而上 的那些专业课又与我

9、们学的sqlserver啊,css啊,ajax啊,毫无关系,就感慨啊,还不如回家自学去就为一个文凭吗? 还不如去培训,浪费这么多钱.于是天天基本上没去上什么课,天天就在做网站,几个学期就做了三个网站。感觉做 这些网站就是学到些技巧,没什么进步,这些技巧就好比别人的名字,告诉你你就知道了,网上也都可以搜到。那时 候就觉得把.net学好就行了,搞j2ee的比较难,搞api编程就别想了,操作系统更是望尘莫及了。后来随着学习 的深入和看了网上许多前辈们的建议才对这些基础的重要性有所体会。 虽然.net或java的开发并不直接用到汇编,操作系统这些,但是不掌握这些基础是有很大问题的,因为你只知 其然不知

10、其所有然,在mfc和.net里面控件一拖什么都做好了,很方便,但是出了问题可能就解决不了,有些在 网上搜都搜不到。这就是基础没打好,不知道它的原理就不知道出错的原因。在学.net的时候常会讨论那些控件 该不该用别人说尽量别用也不知道为什么?不让用是因为你在高层开发,你不知道它的原理出错了你可能解决不 了,但其实是应该用的,不然人家开发它干嘛,但要在了解它的原理后去用就会很方便。 要编写出优秀的代码同样要扎实的基础,如果数据结构和算法学的不好,怎么对程序的性能进行优化,怎样 从类库中选择合适的数据结构。如果不了解操作系统,怎样能了解这些开发工具的原理,它们都是基于操作系统 的。不了解汇编,编译原

11、理,怎么知道程序运行时要多长时间要多少内存,就不能编出高效的代码。 如果没有学好基础一开始就去学.net,java这些越往后就会觉得越吃力,它们涉及的技术太多了,而且不但 在更新,对于三层啊,mvc,orm这些架构,你只会用也不明白为什么用,就感觉心里虚,感觉没学好。而你把 面向对象,软件工程,设计模式这些基础学好了再去看这些就可以一不变应万变。 大家不要被新名词、新技术所迷惑.NET、XML等等技术固然诱人,可是如果自己的基础不扎实,就像是在 云里雾里行走一样,只能看到眼前,不能看到更远的地方。这些新鲜的技术掩盖了许多底层的原理,要想真正 的学习技术还是走下云端,扎扎实实的把基础知识学好,有

12、了这些基础,要掌握那些新技术也就很容易了。 开始编程应该先学C/C+,系统api编程,因为它们更接近底层,学习他们更能搞清楚原理。学好了c/C+ 编程和基础,再去学习mfc,.net这些就会比较轻松,而且很踏实。假设学习VB编程需要4个月,学习基础课程和 VC的程序设计需要1年。那么如果你先学VB,再来学习后者,时间不会减少,还是1年,而反过来,如果先学习 后者,再来学VB,也许你只需要1个星期就能学得非常熟练。 教的表面看来是马步冲权实则都是内功心法,郭靖拜师洪七之后开始练习降龙十八掌凭借的就是这深厚的内 功,吞食蝮蛇宝血又加上练习了周博通传授的九阴真经和外加功夫双手互博技之后,终于练就行走

13、江湖的武 功,由此可见马玉道长传授给了郭靖的是最基础的,也是最重要的观念,编程也好比盖高楼,根基没打好早晚有 一天会挎掉的,而且盖得越高,损失也越惨重。这些底层知识和课本不是没有用也不是高深的不能学,而是我 们必须掌握的基础。 这些是个人的愚见,说的不是很清楚,大家可以看看这些前辈们的经验,相信看完后大家一定会有所体会 说了这么多无非是想告诫大家要打好扎实的基础,不要只顾追求时髦的技术,打好基础再去学那些技术或是 参加些培训,对自身的发展会更好的。 基础这么重要怎样学好它呢?我觉得学好它们应该对照这些基础课程所涉及的方面,多看一些经典书籍,像算 法导论,编程珠玑,代码大全(具体介绍在本论坛每本

14、书的版块里)等,这些经典书籍不仅能帮助我们打好基础,而且 对我们的程序人生也能产生莫大的影响,相信认真研究看完这些书籍后,我们的程序之路会十分顺畅。然而这 些书籍并不好读,有些甚至相当难读,国内的大学用这些书当教材的也不多,这些书又偏向理论,自己读起来难免会 有些枯燥无味。于是就想到建一个论坛,大家共同讨论学习这些书籍,就会学的更踏实更牢固更有趣,这样就能 为以后的学习打下扎实的基础。 1.为计算机初学者或基础不太扎实的朋友指明方向,要注重内功 2.为学习者推荐经典书籍,指明应看哪些书籍,怎样练内功 3.为学习者提供一个交流的地方,更容易学好,不会那么枯燥 4.对每本书分章分别讨论,更专,会学

15、的更踏实更牢固 5.讨论的都是经典书籍,每一本都会让我们受益匪浅,对每本书分别讨论是很有意义的。 本论坛特色: 的。为了方便大家阅读,我把这些前辈们的建议的文章整理成了pdf,大家在下面下载吧!希望对大家有帮助。pdf 地址: 编程就好比练功,如果学习.net,mfc,vb等具体的语言和工具是外功(招式),对基础的学习就是内功,只注重 招式而内功不扎实是不可能成为高手的。很多人会认为射雕英雄传中马玉道长什么都没有教郭靖,马道长 1 . 计算机科学概论 计算机科学概论 2 . 计算机数学基础 高等数学 线性代数 概率论与数理统计 离散数学及其应用 离散数学教程( 北大版) 什么是数学 具体数学:

16、计算机科学基础 3 . C 语言 谭浩强C 程序设计 C p r i m e r p l u s T h e C p r o g r a m m i n g l a n g u a g e C 和指针 C 专家教程 C 陷阱与缺陷 c 语言解惑 C 标准库 你必须知道的4 9 5 个C 语言问题 4 . 算法与数据结构 数据结构( 清华版) 数据结构与算法分析C 语言描述 编程珠玑 编程珠玑I I 算法导论 计算机程序设计艺术卷1 计算机程序设计艺术卷2 计算机程序设计艺术卷3 5 . 电子技术基础 模拟电子技术( 童诗白版) 数字逻辑与数字集成电路( 清华版) 6 . 汇编语言 汇编语言(

17、王爽版) 8 0 X 8 6 汇编语言程序设计教程 I n t e l 汇编语言程序设计 I B M P C 汇编语言程序设计( 国外版) 高级汇编语言程序设计 保护方式下的8 0 3 8 6 及其编程 黑客反汇编揭秘 W i n d o w s 环境下3 2 位汇编语言程序设计 7 . 计算机硬件原理 计算机组成- 结构化方法 微机原理与接口技术( 陈光军版) 计算机体系结构( 张晨曦版) 计算机组成与设计硬件/ 软件接口 I n t e l 微处理器结构、编程与接口 计算机体系结构( 量化研究方法) 编程卓越之道卷1 编程卓越之道卷2 深入理解计算机系统 编码的奥秘 8 . 数据库系统原理

18、 数据库系统概念 数据库系统导论 数据库系统实现 计算机经典书籍汇总, 下载地址:h t t p : / / b b s . t h e i t h o m e . c o m / r e a d - h t m - t i d - 3 0 8 . h t m l 9 . 编译原理 编译原理( 清华第2 版) 编译原理及实践 编译原理: 原则, 技术和工具 现代编译原理- C 语言描述 高级编译器设计与实现 1 0 . 操作系统原理 操作系统概念 现代操作系统 链接器和加载器 程序员的自我修养: 链接、装载与库 自己动手写操作系统 操作系统设计与实现 1 1 . 计算机网络 计算机网络( C

19、o m p u t e r N e t w o r k s ) T C P - I P 详解卷1 T C P - I P 详解卷2 T C P - I P 详解卷3 用T C P / I P 进行网际互联( 第一卷) 用T C P / I P 进行网际互联第二卷 用T C P / I P 进行网际互联第三卷 1 2 . 软件工程和面向对象程序设计 C + + 编程思想卷1 j a v a 编程思想 软件工程( S o f t w a r e . E n g i n e e r i n g ) 软件工程:实践者的研究方法 深入浅出面向对象分析与设计 h e a d f i r s t 设计模式

20、道法自然: 面向对象实践指南 面向对象分析与设计 敏捷软件开发:原则、模式与实践 设计模式: 可复用面向对象软件的基础 测试驱动开发 重构改善既有代码的设计 代码大全 程序设计实践 程序员修炼之道:从小工到专家 卓有成效的程序员 代码之美 人月神话 计算机程序的构造和解释 观止- 微软创建N T 和未来的夺命狂奔 代码优化:有效使用内存 美 克里斯卡巴斯基 编程高手箴言( 梁肇新) 游戏之旅- 我的编程感悟( 云风) 1 3 . w i n d o w s 编程基础 W i n d o w s 操作系统原理 I n s i d e W i n d o w s 2 0 0 0 深入解析W i n

21、 d o w s 操作系统 天书夜读:从汇编语言到W i n d o w s 内核编程 w i n d o w s 程序设计 W I N D O W S 核心编程 1 4 . l i n u x / u n i x 编程基础 鸟哥的L i n u x 私房菜: 基础学习篇 鸟哥的L i n u x 私房菜: 服务器架设篇 l i n u x 程序设计 U N I X 环境高级编程 U n i x 网络编程卷1 U N I X 网络编程卷2 U N I X 编程艺术 U N I X S h e l l 范例精解 1 5 . L i n u x / u n i x 内核源代码和驱动程序 L i n

22、 u x 内核设计与实现 L I N U X 内核源代码情景分析 深入理解L I N U X 内核 L i n u x 内核完全注释 L i n u x 设备驱动程序 1 6 . C + + 语言 C + + 编程思想2 E s s e n t i a l C + + C + + p r i m e r C + + 程序设计语言 C + + 语言的设计和演化 A c c e l e r a t e d C + + E f f e c t i v e C + + M o r e E f f e c t i v e C + + E x c e p t i o n a l C + + M o r e

23、 E x c e p t i o n a l C + + C + + 设计新思维 深度探索C + + 对象模型 C + + 沉思录 C + + T e m p l a t e s : T h e C o m p l e t e G u i d e C + + F A Q s 1 7 . 标准库S T L 使用 C + + 标准程序库 E f f e c t i v e S T L 泛型编程与S T L 1 8 . S T L 源代码 S T L 源码剖析 1 9 . j a v a 语言 j a v a 编程思想 J a v a 编程规范 下载 第1章电 筒 密 谈 假若你才1 0岁,你的好朋

24、友与你临街而住,而且你们卧室的窗户面对着面 。每天晚上, 当父母像平常一样很早催你上床睡觉时,你可能还想与好朋友交流思想、发现、小秘密、传 闻、笑话和梦想,没有人可以责备你,毕竟 ,渴望交流是大多数人的天性。 当你们卧室还亮着灯时,你和你的好朋友可以临窗舞动手臂、打手势或以身体语言来交 流思想,但复杂一些的交流就有些困难了。而且一旦父母宣布“熄灯” ,交流也就无法继续进 行了。 如何联系呢?用电话吗? 1 0岁的小孩子屋里有电话吗?即使有,你们的谈话可能被偷听。 如果家里的电脑通过电话线联了网,它可能会提供无声的帮助,不过很不幸,它也不会在你 的房间里。 你和朋友采用的方法是用手电筒。所有的人

25、都知道手电筒是为孩子们藏在被窝里看书而 发明的,它也适合在黑暗中用来交流。它无声无息,且光的方向性很好,不会从卧室的门缝 中泄露而使家人起疑。 用手电筒的光可以交谈吗?这值得一试。一年级你就学过在纸上写字母和单词,把这种 方法运用到手电筒上看起来也合情合理。你所需做的就是临窗而站,用光画出字母。画字母 O ,就打开电筒,在空中画个圈,然后关上开关;字母 I则是画竖直的一笔。但是你很 快发现这种方法行不通,当你注视来去飞舞的光柱时,会发现在脑海中将它们组合起来不是 件容易的事,这些光划成的圈圈杠杠太不准确了。 也许你曾经看过一部电影,影片中两个水手隔海用闪烁的光传递消息。在另一部电影中, 一个间

26、谍用镜子反射阳光向一间屋子中被俘获的同伙发送讯息。这就给了你启发,你起先设 计一种简单的交流方法,使字母表中的每个字母与一定数目的闪烁相对应。 A闪一下,B闪两 下,C闪三下,如此递推,Z就闪烁2 6下。B A D这个词由字母间有间隔的两闪、一闪、四闪组 成,这样你不会误以为它是闪七下的字母 G了。词间的停顿则比字母间的停顿时间稍长一些。 这看起来很有希望,采用这种方法的优点是你不需要在空中挥舞手电简,只需对准方向 按开关就行了;缺点是你试图发送的第一个消息( “How are you?” )就需要1 3 1次闪烁,更 糟的是,你忘了定义标点符号,所以无法表示句尾的问号了。 这离问题的解决已经

27、很近了,你想别人以前肯定也遇到过类似的问题,你解决它的思想 一定是正确的。 为了解决问题, 白天的图书馆之行使你发现了神奇的摩尔斯电码 (morse code) , 这正是你想要的,即使你不得不重新学习如何“写”字母表中的字母。 以下就是区别:在你发明的体系中,每个字母是一定数目的闪烁,从闪烁一下的 A到闪烁 2 6的Z;而在摩尔斯电码中,有长短两种闪烁,当然,这会使摩尔斯电码更为复杂,但它在实 际应用中却被证实是更有效的。那句“ How are you?”现在仅需3 2次而不是1 3 1次闪烁,而 且这还包含了问号。 在讨论摩尔斯电码的工作原理时,人们并不说“长闪烁” 、 “短闪烁” ,他们

28、使用“点 (d o t) ”和“划(d a s h) ” ,因为这样易于在印刷品上表示。在摩尔斯电码中,字母表中的每一 该书下载自-书部落-分享计算机经典巨著!-!仅供试看_ 个字母与一个点划序列相对应,正如在下表中你所看到的: 尽管摩尔斯电码与计算机毫不相关,但熟悉它的本质却对深入了解计算机内部语言和软 硬件的内部结构有很大的帮助。 在本书中,编码或代码(c o d e)通常指一种在人和机器之间进行信息转换的系统(体系) 。 换句话说,编码便是交流。有时我们将编码看成是密码 (机密),其实大多数编码并不是的。大 多数的编码都需要被很好地理解,因为它们是人类交流的基础。 在百年孤独的一书的开篇

29、,马尔克斯回忆了一个时代,那时“世界一片混沌,许多 事物没有名字。为了加以区别才给事物各个命名。 ”这些名字都是随意的,没有什么原因说明 为什么不把猫称为狗或不把狗称为猫。可以说英语词汇就是一种编码。 我们用嘴发出声音组成单词,这些词可以为那些听得到我们声音,理解我们所用语言的 人所听懂,我们称这种编码为“口头语言”或“语音” 。对写在纸上(或凿在石头上、刻在木 头上或通过比划写在空气中)的词,还有一种编码方式,那就是我们在印刷的报刊,杂志和 书籍上看到的字符,称之为“书面语言”或“文本” 。在许多语言中,语音和文本间有很强的 联系。例如在英语中,字母或一组字母与一定的读音相对应。 手势语言的

30、发明帮助了聋哑人进行面对面的交流。这是一种用手和胳膊的动作组合来表 达词语中的单个字母、整个词及其基本概念的语言。对盲人来说,他们可以使用布莱叶盲文 (B r a i l l e) 。这种文字使用凸起的点代表字母,字母串和单词。当谈话内容要被迅速地记录下 来时,缩写和速记是很有用的。 人们在相互沟通时使用了各种不同的编码,因为在不同的应用场合,其中的一些较其他 的更为简便。例如,语言不能在纸上存储,所以使用了文字;语言、文字不适合用来在黑夜 中安静地传递消息,故摩尔斯电码是一个方便的替代品。只要一种编码可以适用于其他编码 所不能适用的场合,它就是一种有用的编码。 以后将看到,计算机中使用了不同

31、的编码来传递和存储数字、声音、音乐、图像和视频 (电影) 。计算机不能直接处理人类世界的编码,因为它不能模拟人类的眼睛、鼻子、嘴和手 指来接收信息。尽管这些年来计算机的发展趋势使我们的桌上电脑具有捕获、存储、处理和 提供人类交流中所使用的各种信息的能,而且不论这些信息是视觉的(文字和图片) 、听觉的 (语言、声音及音乐)还是两者的混合(动画和电影) 。所有这些信息都要求使用它们自己的 编码方式,正如交谈需要使用人的某些器官(嘴和耳朵) ,而书写和阅读则需要使用另外一些 2编码的奥秘 下载 该书下载自-书部落-分享计算机经典巨著!-!仅供试看_ 器官(手和眼睛)一样。 用手电筒发送摩尔斯电码时,

32、电筒的开关快速地合开代表一个点,让电筒照亮稍长的时 间则代表一个划。举例来说,发送字母 A,要先快速地合开开关,然后再稍慢些合开。在发送 下一个字母前要有短暂的停顿。约定划的时间大约是点的 3倍。例如,如果点的照亮时间为 1 秒,那么划就是3秒。 (实际上,摩尔斯电码的传递速度要快得多。 )接收者看到了短闪和长闪 就知道是A。 摩尔斯电码中点划之间的间隔是极为关键的。例如,发送字母 A时,点划之间的间隔应与 一个点的时间大致相同(如果点的时间是 1秒,那么间隔的时间也是 1秒) 。同一个词中字母间 间隔稍长,约为划的持续时间(或者 3秒,如果那是划的持续时间的话) 。下面是单词“h e l l

33、 o” 对应的摩尔斯电码,图中示意了字母间的间隔(隙) : 单词之间相隔大约2倍于划的时间(如果划是3秒,那么间隔即为6秒) 。下面是“hi there” 对应的编码(码字) : 手电筒开和关的时间长度并没有限定,这取决于点的时间长度,点长又由手电筒开关触 发的速度和摩尔斯电码发送者记忆电码的熟练程度来决定,熟练发送者的划也许与生手的点 等长。这个小问题会使接收电码有些困难,但在一两个字母之后,接收者通常就可以辨认出 哪个是点,哪个是划了。 粗看起来,摩尔斯电码的定义这里所谓的定义是指与字母表中的字母相对应的各种 点划序列与打字机字母的排列一样是随意的。但仔细观察后你会发现不完全如此,简短 的

34、码字分配给了使用频率较高的字母,例如 E和T,爱赌博的人和“财富之轮”爱好者可能一 下就注意到了这个问题;不常用的字母如 Q和Z(它们在赌局中是 1 0点)则分配以较长的码 字。 几乎所有人都知道一点儿摩尔斯电码,国际遇险信号 S O S的摩尔斯电码为“三点三划三 点” 。S O S并非缩写,选择它仅仅因为它有一个易记的摩尔斯电码序列。第二次世界大战中, 英国广播公司选用贝多芬第五交响曲中的片段作为节目前奏B A H、B A H、B A H、 B A H M M M M M,听起来颇像摩尔斯电码中V(代表Vi c t o r y)的码字。 摩尔斯电码的一个缺点是它没有对大小写字母进行区分。除表

35、示字母外,摩尔斯电码还 用5位长的码字来表示数字: 这些数字的码字看起来还有些规律 (相对于字母对应的码字而言 )。大多数标点符号的码字 采用5位、6位或7位的码长: 第1章 电 筒 密 谈3 下载 该书下载自-书部落-分享计算机经典巨著!-!仅供试看_ 对欧洲一些语言中的重音字母以及一些有特殊用途的缩写定义了特别的码字,S O S就是 这样一个缩写:发送时每个字母的码字之间仅有一点的时间间隔。 如果有特制的用于发送摩尔斯电码的手电筒,你和朋友之间的交流就方便多了。这种手 电筒除了常有的开关,还有一个按钮,按压按钮就可以控制电筒的亮灭。经过练习后,你们 每分钟可以发送和接收 51 0个单词。虽

36、然仍比交谈慢(大概每分钟 1 0 0个词左右)但已足够 用了。 当你和朋友最终熟记了摩尔斯电码时(这是唯一精通发送接收的方法) ,你也可以用它代 替日常用的语言。为了达到最高的速度,可以发“滴( d i h) ”音代表点、 “嗒( d a h )”音代表划。 摩尔斯电码同样也可将文字简化为用点和划两个符号表示。 以上的关键在于“两”这个词“滴、嗒”两个声音, “点、划”两种方式。实际上任 何两种不同的东西经过一定的组合都可以代表任何种类的信息。 4编码的奥秘 下载 该书下载自-书部落-分享计算机经典巨著!-!仅供试看_ 下载 第2章编码与组合 摩尔斯电码由萨缪尔摩尔斯( 1 7 9 11 8

37、7 2)发明,本书后面会在多处提到他。摩尔斯 电码是随着电报机的发明而产生的,电报机我们以后也还要做详尽的说明。正如摩尔斯电码 很好地说明了编码的本质一样,电报机也提供了理解计算机硬件的良好途径。 大多数人认为摩尔斯电码的发送易于接收,即使你没有记住摩尔斯电码,也可以方便地 借助下面这张按字母顺序排列的表发送: 接收摩尔斯电码并将其翻译回单词比发送费时费力多了,因为译码者必须反向地将已编 码的“滴-嗒”序列与字母对应。例如,在确定接收到的字母是“ Y”之前,必须按字母逐个 地对照编码表。 问题是我们仅有一张提供“字母摩尔斯电码”的编码表,而没有一张可供逆向查找的 “摩尔斯电码字母”译码表。在学

38、习摩尔斯电码的初级阶段,这张译码表肯定会提供很大的 便利。然而,如何构造译码表却毫无头绪,因为我们似乎无法找出这些按字母顺序排列的 “滴-嗒”序列的规律。 那么忘记那些字母序列吧,也许按照码字中“滴” “嗒”的个数来排列会是个更好的尝试。 例如,仅含一个“滴”或“嗒”的摩尔斯电码序列只可能代表 E或T这两个字母之一: 两个“滴”或“嗒”的组合则代表了 4个字母I、A、N、M: 三个“滴”或“嗒”的序列代表了 8个字母: 该书下载自-书部落-分享计算机经典巨著!-!仅供试看_ 最后(如果不考虑数字和标点符号的摩尔斯电码) ,四个“滴”或“嗒”的序列则共代表 了1 6个字母: 四张表共包括2 +

39、4 + 8 + 16 3 0个编码,可与3 0个字母相对应,比拉丁字母所需的2 6个字 母还多了4个。出于这个原因,在最后一张表中,你可能注意到有4个编码与重音字母相对应。 在翻译别人发送的摩尔斯电码时,上面 4张表提供了极大的便利。当你接收到一个代表特 定字母的码字时,按其中含有的“滴” “嗒”个数,至少可以跳到其对应的那张表中去查找。 每张表中,全“滴”的字母排在左上角,全“嗒”的字母排在右下角。 你注意到4张表大小的规律了吗?每张表都恰好是其前一张表的两倍大小。这其中包含的 意义是:前一张表的码字后加一个“滴”或加一个“嗒“,即构成了后一张表。 可以按下面的方式总结这个有趣的规律: 点划

40、数码字数 12 24 3 .8 41 6 四张表中每张码字数都是前一张的两倍,那么如果第一张表含2个码字,第二张表则含22 个码字,第三张表222个码字。以下是另一种表达方式: 点划数码字数 12 222 3222 42222 当然,如果遇到数的自乘,可以用幂表示,例如 2222可以写成24。数字2、4、8、 1 6分别是2的1、2、3、4次幂,因为可以用依次乘 2的方法将它们计算出来。由此我们的总结 还可以写成下面的方式: 点划数码字数 121 222 323 424 6编码的奥秘 下载 该书下载自-书部落-分享计算机经典巨著!-!仅供试看_ 这张表简单明了,码字数是 2的次方,次方数目与码

41、字中含有的“滴” “嗒”数目相同。 我们可以把表总结为一个简单的公式: 码字数 = 2“滴”与“嗒”的数目 很多编码中都用到2的幂,在下一章中我们会看到另一个例子。 为了使译码的过程更为简便,可以画出如下一张树形图: 这张表表示出了由“滴”与“嗒”的连续序列得出的字母。译码时,按箭头所指从左到 右进行。例如,你想知道电码“滴-嗒-滴”代表的字母,那么从最左边开始选择点,沿箭头 向右选择划,接着又是点,得出对应的字母是 R,它写在最后一个点的旁边。 如果认真考虑,会发现事先建立这样一张表是定义摩尔斯电码所必需的。首先,它保证 了你不会犯给不同的字母相同码字的错误!其次,它保证你使用了全部的可用码

42、字,而没有 使“滴”与“嗒”的序列毫无必要的冗长。 我们可以加长码字至 5位或更长,5位长的码字又提供了额外的 3 2(22222或25) 个码字。一般而言,这就足够 1 0个数字和1 6个标点符号使用。实际上,摩尔斯电码中的数字 确实是5位的,但在许多其他编码方式中, 5位码字常用于重音字母而不是标点符号。 为了包含所有的标点符号,系统必须扩充至 6位表示,提供6 4个附加编码,此时系统可表 示2 + 4 + 8 + 1 6 + 3 2 + 6 4共1 2 6个字符。这对摩尔斯电码而言太多了,以至于留下许多“未定义” 的码字。此处“未定义”指不代表任何意义的码字,如果在你接收的摩尔斯电码中有

43、未定义 的码字,就可以肯定发送方出了差错。 由于推出了下面这条公式: 码字数 = 2“滴”与“嗒”的数目 我们就可以继续导出更长的码字位数所代表的码字数目。很幸运,我们不必为确定码字数目 而写出所有可能的码字,我们所要做的不过是不断地乘 2而已: 第 2章 编码与组合7 下载 该书下载自-书部落-分享计算机经典巨著!-!仅供试看_ 点划数码字数 121 = 2 222 = 4 323 = 8 424 = 16 525 = 32 626 = 64 727 = 128 828 = 256 929 = 512 1 0210 = 1024 摩尔斯电码被称为二元码(binary code) ,因为编码中

44、仅含“滴”和“嗒” 。这与一个硬 币很相似,硬币着地时只可能是正面或反面。二元事物(例如硬币) 、二元编码(例如摩尔斯 电码)常常用2的乘方来描述。 上面所做的对二元编码的分析在数学上的一个分支组合学或组合分析里只能算是一个 简单的练习。传统上,由于组合分析能够用来确定事件出现的几率,例如硬币或骰子组合的 数目,所以它常用于概率统计,但它也同样有助于我们理解编码的合成与分解。 8编码的奥秘 下载 该书下载自-书部落-分享计算机经典巨著!-!仅供试看_ 下载 第3章布莱叶盲文与二元编码 摩尔斯不是第一个成功地将书写语言中的字母翻译成可解释代码的人,他也不是第一个 因为其编码而受到人们纪念的人,享

45、有这个荣誉的是一个晚摩尔斯 1 8年出生的早慧的法国失 明少年。虽然人们对他的生平所知甚少,但就是所知的这一些却足以给后人留下深刻印象。 路易斯布莱叶1 8 0 9年出生于法国的C o u p v r a y,他的家 乡在巴黎以东 2 5英里,父亲以打造马具为生。 3岁时,在这 个本不该在父亲作坊里玩耍的年龄,小布莱叶意外地被尖头 的工具戳中了眼睛。由于伤口发炎,感染了另一只眼,他从 此双目失明。布莱叶原本注定在贫困潦倒中度过一生(正如 那时大多数盲人一样) ,但他的聪明才智和求知欲不久即显 露了出来。在本地牧师和一位学校老师的帮助下,布莱叶和 其他孩子一道上了学, 1 0岁那年又前往巴黎的皇

46、家盲人青年 学院学习。 盲人教育的一大障碍就是他们无法阅读印刷书籍。 Valentin Hay(17451 8 2 2 ),巴黎学校的创始人,发明了一 种将字母凸印以供触摸阅读的方法。但这种方法使用起来较为困难,并且只有很少的书籍用 这种方法“制造” 。 视力正常的H a y陷入了一种误区。对他而言,字母 A就是A,它看起来(或感觉起来)也 必须像是个A。 (如果给他手电筒作为交流工具,他也会试图在空气中画出字母的形状,而我 们已经知道这种方法并不有效。 )H a y也许没有意识到一种与印刷字母完全不同的编码会更适 于盲人使用。 另一种可选的编码有一个出人意料的起源。法国陆军上尉 Charle

47、s Barbier在1 8 1 9年发明了 一种他自称为criture nocturne的书写体系,这种体系也被称为“夜间文字。他使用厚纸板上 有规律凸起的点划来供士兵们在夜间无声地传递口信(便条) ,士兵们使用尖锥状的铁笔在纸 的背面刺点和划,凸起的点可以用手指感觉阅读。 B a r b i e r体系的问题是其过于复杂。 B a r b i e r没有用凸起的点来代表字母表中的字母,而是 用其代表声音。这样的系统中一个单词通常需要许多码字表达。这种方法在野外传递短小消 息还算有效,但对长一些的文章而言则有明显不足,更不要说是整本的书籍了。 布莱叶在1 2岁时就熟悉B a r b i e r

48、方法了,他喜欢使用这些凸点,不仅因为它们易于用手指 阅读,更因为它们易于书写。教室里拿着铁笔和纸板的学生可以记笔记供课后阅读。布莱叶 勤奋地工作试图改进这种编码系统。不出 3年(在他1 5岁时) ,他创建了自己的系统,其原理 直到今天还在使用。布莱叶系统有很长时间仅局限在他所在的学校使用,后来它逐渐扩散到 世界各地。1 8 3 5年,布莱叶染上了结核病。1 8 5 2年,在他4 3岁生日过后不久,他便去世了。 时至今日,布莱叶系统的改进版本甚至可以与有声录音带竞争,它为盲人提供了与书写 世界联系的途径。布莱叶方法仍是适于既聋又盲的人阅读的唯一方法。近来年,随着电梯和 该书下载自-书部落-分享计

49、算机经典巨著!-!仅供试看_ 自动语言机的普及,布莱叶系统更加广为人知。 本章将剖析布莱叶编码的编码方法及其工作原理,不过不必真正学习布莱叶编码或记住 任何东西,我们只要大概了解一下编码的本质就行了。 布莱叶编码中,普通书写语言的每个字符具体而言如数字、字母和标点符号都被 编码成局限在23小格中一个或多个凸起的点。这些小格一般被标记为 16: 在当今实际使用中,特殊的打字机或刻印机可以在纸上打出布莱叶编码中的小点。 由于在书中夹印几页布莱叶编码极其昂贵,我们使用了在通常印刷品中常用的布莱叶码 的表示方法。在这种表示方法中,小格中的 6个点全部印刷出来,大点代表小格中的凸起点, 小点则代表平滑的点。例如下图中的布莱叶字母中,点 1、3、5是凸起的,点2、4、6则没有: 在这里吸引我们的问题是:点是二元的。一个特定的点不

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 其他杂项

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁