何勤:《C语言程序设计问题与求解方法》

上传人:沈*** 文档编号:202074108 上传时间:2023-04-21 格式:PDF 页数:162 大小:27.32MB
收藏 版权申诉 举报 下载
何勤:《C语言程序设计问题与求解方法》_第1页
第1页 / 共162页
何勤:《C语言程序设计问题与求解方法》_第2页
第2页 / 共162页
何勤:《C语言程序设计问题与求解方法》_第3页
第3页 / 共162页
资源描述:

《何勤:《C语言程序设计问题与求解方法》》由会员分享,可在线阅读,更多相关《何勤:《C语言程序设计问题与求解方法》(162页珍藏版)》请在装配图网上搜索。

1、C语言程序设计问题与求解方法编程高手修炼捷径何 勤 著代序目前,人们要真正学会编程,大多都要花费五年以上的时间,悬梁刺股、卧薪尝胆。真正原因何在?其实只需到真正会编程的人身上,就能找到根本原因。经过认真仔细分析,我发现根本原因在于:每个真正会编程者,都必须具备计算机科学的大局观。也就是说,每个真正会编程者都必须懂得和掌握:1、C语言的基本语法(主要是各种命令型语言的公共部分,其他语言目前还无法取代)2、大量阅读和调试经典的、基本的、由易到难的各种类型的C语言程序(至 少 100题以上)。消化和积累各种基本问题的编程思路,并能用逐步求精的伪代码构造常见问题的算法;3、学习算法和数据结构的基本知识

2、。4、整体上把握计算机到底是如何工作的:5、整体上把握操作系统是如何在硬件的密切配合下通过查找各种表格,管理调度计算机的所有软硬件资源为多道应用程序运行(和计算机用户)提供服务的。6、编译程序大体上是如何对源程序进行编译工作的。以上六项是必须具备的。此外,如果想成为程序员,还应当学习和掌握:汇编语言程序设计、数据库原理及数据库编程、计算机网络及网络编程、面向对象程序设计等课程知识、计算机原理和操作系统更深入的知识。山此可见,这条成才之路确实非常漫长和艰苦!尤其是第4 到 第 6 项知识的掌握,更是一个极为痛苦的心路历程上的万里长征!因为读者不仅要认真学习这些知识,而且还要做大量的提炼精华、融会

3、贯通的艰巨功课。这是由于各门课程之间的内容衔接这项无比艰巨的工作,通常必须由学生亲自去完成,目前没有任何一 本书在这方面做得比较好。为了大大减轻这个成才过程中的痛苦,明显缩短读者真正学会编程的周期。笔者花费了十余年时间广泛收集、筛选素材,并且进行了长时间地、艰苦地探索。终于很幸运地找到了一个绝好的比喻理想厨房系统,恰好可以把以上几个方面的知识在一个比较初级的层次上,比较完美地串联起来。构成一幅计算机科学中(与真正学会编程有关的)最重要的、最精华的基本知识的“联络图”。为初学者在短时间内把握计算机科学的大局观并学会编程,开辟了一条相对比较轻松的捷径。而 且 一,这也为后续更高级编程技术课的学习奠

4、定了扎实的知识基础。本书虽然比较系统地讲解了C语言语法,但是,读者别指望从这本书中找到很多高深语法细节问题的详细讲解。因为笔者认为:过早学习太多高深语法知识,是很多读者学不会编程的罪魁祸首!这将导致很多读者觉得程序设计课相当枯燥乏味。浪费了读者本可以用来学习生动有趣的编程思路和技巧的、有限和宝贵的精力。大脑里留存下了一大堆未经消化的细节语法规则,反而束缚了最需灵活自由的编程思路的展开和翱翔。编程语言的高级语法知识的学习和掌握,比大量编程思路的领会、消化和积累要容易得多!读者在学习编程过程中最需要得到的是编程思路上的引导和启发。读者应当在真正学会编程后再决定是否要比较全面深入自学哪种程序设计语言

5、的语法细节知识。本书中的大多数例题值得你认真钻研,因为其中蕴含了大量比较经典的基本编程思想和编程技巧。本书不可能系统讲解各种编程思路(这是算法、数据结构这两门课程的任务),然而,本书却教给了读者很多有效的举一反三的编程方法,这种方法强调从特殊到般,来探索问题的编程思路和编程技巧。在循环和数组这两章中的很多例题中,展现了如何利用这种方法来做各类编程题。本书也很重视培养读者用逐步求精的伪代码来构思算法的能力。读者要注意,学习钻研本书,一定要配套做100200道各种类型的由易到难的编程题。这个亲自动手编写和调试程序的实践性修炼环节,是任何编程书籍和老师都无法替代的。这是学会编程决不能省略的最重要环节

6、。再困难也要坚持,挺过开始的困难阶段,变成一种习惯后,你就能够逐渐享受到编程带来的极大乐趣。读者还要特别注意:千万不要被某些教科书误导,从而陷入钻研一门高级语言语法细节知识的痴迷和狂热之中,误以为学好一门语言的高深语法,就可以轻松步入编程高手的行列。这就象一位想学会写作文的学生,只热衷于冷僻汉字和高深语法,而置更为重要的通过认真学习消化课文来积累写作思路和技巧(包括大量造句和写作文)于不顾那么可笑!必须将编程思路的学习领会和积累,放在编程学习中的首要位置。以理想厨房为“纲”,以程序如何运行、如何构思、如何编写为“目”,把计算机科学中为了真正学会编程必须掌握的、几乎所有的、基础的、精华的知识有机

7、的串联起来。在本书中仅仅做了这样一件事。书在手,“软(指软件)硬(指硬件)兼施、内(指编程思想)外(指语言语法)兼修”,让读者可以真正全方位学习编程,并且真正学会编程,这是本书的写作目标。所以,本书中的知识讲解比较密集、浓缩,尤其是第一章和第二章。读者要作好心理上的准备,你是否愿意付出艰苦努力,去认真学习本书,出版社和作者是否值得信任。读者不要以为真正学会编程只是计算机专业学生的事。任何一位当代社会的理工类大学生,都必须具备一定的编程能力,能够在未来的科技工作中把计算机做为自己的得力助手和亲密伙伴,否则你就不是当代社会的合格科技人材。当代科技工作者不会编程,就象古代战士不会射箭一样。何勤初学者

8、阅读本书,建议从第41页开始第一部分:计算机原理(初)第0 章“理想厨房”的工作原理0.1 理想厨房系统0.2理想厨房系统的一个炒菜实例0.3 “理想厨房”工作的重要特点0.4 理想厨房系统与计算机系统术语对照表第1 章计算机的基本工作原理1.1 二进制简介1.1.1 二进制与二进制数的基本概念1.1.2 与二进制相关的术语:位、位串、字节1.1.3 数和码的含义与区别1.2 计算机系统1.2.1 计算机系统中的硬件1.2.2 计算机系统中的软件1.2.3 计算机指令能做的工作1.3 提高部分1 3 1 程 序(指令序列)在硬件上的运行过程1.3.2 结构化、规范化的机器语言程序1.3.3 各

9、种数制之间的转换第二部分(C语言基础)第 2 章 C语言程序结构和基本语法要素第 3章 顺序结构程序设计3.1 语句执行的顺序性3.2 用计算机求解问题的步骤3.3 逐步求精的伪代码3.4 验证算法的方法3.5 赋值表达式和多重赋值3.6 变量类型的进一步讨论3.7 各种类型的常量3.8 不同类型数据之间的类型转换3.9 常见编程错误3.10 提高部分3.10.1 机内形式的整数3.10.2 二进制浮点数在计算机中的表示方法第 4章选择结构程序设计4.1 两种基本的i f 语句4.2 布尔表达式之一:关系表达式4.3 空语句4.4 复合语句4.5 i f 语句的嵌套及其用法4.6 布尔表达式之

10、二:逻辑表达式4.7 一种特殊的多重嵌套if语句多分支选择结构语句4.8 switch 语句4.9 选择结构常见错误4.10 提高部分4.10.1 其他表达式作为布尔表达式使用4.10.2 条件运算符4.10.3 逻辑表达式的短路运算第 5 章循环结构程序设计5.1 while 语句5.2 自增、自减运算符和表达式的副作用5.3 do-while 循环语句5.4 for语句5.5 复合赋值运算符和逗号表达式5.6 bre ak 语句和 continue 语句5.7 循环语句的嵌套5.8 常见错误5.9 提高部分第 6 章数组6.1 引言6.2 一维数组6.2.1 一维数组的定义6.2.2 下标

11、 变 量(数组元素)6.2.3 下标和下标表达式6.2.4 动态下标变量6.2.5 下标和下标表达式的允许取值范围6.2.6 数组元素在内存中的相对位置6.2.7 数组元素的初始化6.2.8 下标变量的存取6.3 一维字符数组和字符串6.3.1 一维字符数组的定义6.3.2 单个字符的输入输出库函数6.4 二维数组6.5 编程综合练习第 7 章函数7.1 引言7.2 函数的概念7.3 函数编写的一些重要原则7.4 使用数组(或数组元素)作为函数参数7.5 函数的嵌套与递归7.6 有关函数定义、返回、声明、调用的进一步说明7.6.1 函数定义7.6.2 re turn语句与函数类型7.6.3 函

12、数声明与函数原型7.6.4 函数调用7.6.5 函数的形式参数与实际参数7.7 提高部分第 8 章指针8.1 引言8.2 指针变量的定义、初始化和应用8.2.1 指针变量的定义8.2.2 指针变量的初始化8.2.3 指针赋值8.2.4 间接寻址运算符8.2.5 指针变量作为函数的形式参数和实际参数8.2.6 指针作为函数调用的返回值8.3 指向数组的指针以及相关的运算8.3.1 指针变量指向数组元素8.3.2 数组名用作指针(常量)8.4 提高部分第 9 章 C 语言进阶9.1 结构9.1.1 结构类型的定义9.1.2 定义结构变量9.1.3 结构变量的初始化和访问(输入/输出和存取)9.1.

13、4 结构数组和结构指针的定义、初始化以及访问方式9.1.5 用 type de f定义类型的别名9.2 编译预处理9.2.1 include 命令9.2.2#de fine 命令9.2.3 条件编译指令9.3 文件、流和输入/输出9.3.1 概述9.3.2 文件和流的概念9.3.3 文件的两种形式9.3.4 文件的输入和输出9.4 提高部分9.4.1 链 表(单链表)9.4.2 位运算9.4.3 枚举类型9.4.4 文件流的本质第三部分算法与数据结构简介第四部分利用e ge 图形库函数的游戏编程案例第五部分计算机原理和操作系统简介第 11章 编程原理进阶11.1 引言11.2 输入/输出设备和

14、输入/输出接口电路11.3 内存与外存11.4 中断和操作系统11.4.1 操作系统工作的机制11.4.2 操作系统的特点11.5 提高部分115.1计算机为何使用二进制数字信号?11.5.2模拟图像和声音的数字化编码过程附录A e ge 图形库函数使用说明和库函数列表附录B常用字符与ASCII码对照表附录B常用C 语言库函数附录C运算符的优先级和结合性附录D格式化输入输出库函数的用法小结参考文献第零章理想厨房的工作原理一种有着神奇的“魔力”和“智能”的人造设备,正在迅速地、彻底地、默默无闻或者令人震惊地改变和丰富我们所生活的大千世界。这个看起来很不起眼的,在少数场合被称 为“电脑”的电器设备

15、,是如何具有如此神奇的“魔力”和“智能”的?本章和下一章将带你开始解开这个与我们的生活和工作息息相关的当代社会最大的谜。0.1节介绍理想厨房系统,Q 2节通过一个炒菜实例,讲解理想厨房各部件是如何密切配合工作的。0.3是一张理想厨房系统与计算机系统的对照表。计算机从发明到现在不过70年左右的时间,然而计算机的发明、改进和普及,把人类带进了智能时代。计算机本身也变得越来越复杂、快速、小巧、种类繁多。但大多数计算机都遵循冯.诺伊曼体系结构,这为我们理解计算机的基本工作原理提供了方便。从某种角度来看,计算机就是一种人造智能生命。想要真正学会编程,通过编写的程序命令计算机工作,就必须懂得计算机的基本工

16、作原理。就像人们要与某种具有智能的其他物种个体进行交流通信,就必须对那个物种的习性有一个基本了解一样。本章和下一章是全书的重要基础。通过这两章,读者可以了解计算机的工作过程。这些知识对学习程序设计非常有帮助。直接学习计算机工作原理是极其枯燥乏味、很困难的,因为有大量的新名词。为此,笔者付出了极大的努力,找到了一种比较好的类比方法理想厨房系统,通过这个例子就可以初步了解计算机的基本工作原理。0.1理想厨房系统:理想厨房系统,是一个通过顺序执行菜谱中的各个加工步骤,把原材料加工成菜肴的系统。它由硬件和软件(菜谱)组成。1)软件部分:菜谱是理想厨房系统中的个无重量、无体积、不会损坏、但可以经常更换的

17、极为重要的“软件”部件。菜谱由一个个的加工步骤顺序组成。每个加工步骤命令理想厨房系统完成一个基本操作(比如炒、蒸、煮、输入一种原材料等)。注意:为了解说简洁起见,在以下叙述中,我们经常把菜谱中的一个“加工步骤”称为一条 指 令:。因为一个加工步骤就是一条指导理想厨房如何工作的命令。2)硬件部分:理想厨房系统,主要由以下四个 硬件”(即实物)部件构成理想厨房、自动冰箱、输入输出设备(即配菜员和传菜生)和三条传送带。需要注意的是,理想厨房仅仅只是理想厨房系统中的一个重要组成部分。理想厨房系统的构成筒图如图0.1所示:理想厨房自动冰箱0.1 理想厨房系统运行示意图:0.1 理想厨房系统示意图:自动冰

18、箱:自动冰箱负责临时保存菜谱、原材料和菜肴。它由非常多的(比如几百个)大小一样的格子组成,每个格子都有一个唯一固定编号,这个编号称为地址。地址是从0 开始逐一递增的。是不是感到很奇怪:菜谱也要保存在冰箱中,这样做的道理请看本章后面。每份原材料和菜谱中的每个加工步骤,都占据冰箱中的一个格子。理想厨房:功能:负责根据从冰箱的菜谱中取到的加工步骤,进行炒菜以及进行相关的控制工作。构成:理想厨房主要由厨房管理员、厨师、炊具和一些碟子组成,参见图0.1。理想厨房中的各种碟子理想厨房中有一些起着重要作用的碟子:个P C 碟(又称为指令地址存放碟):此碟中存放一个非负整数值,这个值是一个地址;它指明将要执行

19、的指令位于自动冰箱的哪一格中。一 个 IR 碟(又称为指令存放碟):用来存放刚刚从冰箱中取过来的一条立即要执行的指令。理想厨房中还有若干个通 用 碟(图 0.1中标有名称RO、R I、R 2的碟):用来临时存放从冰箱中取来的原材料或经过加工了的半成品或成品。这是由于到冰箱格子中存取物品,要比到通用碟慢得多的缘故。指令执行的全过程理想厨房每次只能按顺序执行菜谱中的一条指令。理想厨房执行指令的流程完全是周期性的,即任意一条指令都是按照“取指令阅读分析指令一执行指令”这三个阶段进行的。厨房管理员首先根据PC碟中的值,通过三条传送带的协调工作(三条传送带如何协调工作的细节,请参见下一节),到自动冰箱的

20、指定格中去取菜谱中的 条指令。取到理想厨房并把它存放到IR碟中之后,PC碟中的值将会加上1这是为取下一条指令预先做好准备。然后,用房管理员阅读并分析IR碟中刚取到的这一条指令,根据该指令的指示,去做以下六类工作中的一种:1.取物品:通过三套传送带,9 令自动冰箱把指定地址格子中的(炒菜加工步骤马上要用到的)原 材 料(通过材料传送带)传送到理想厨房中来;2.加 工:命令厨师按照指令的要求,对原材料作一个基本加工操作(做“炒”,“蒸”,“煮”等基本操作步骤中的某一个动作);3.存物品:通过向三套传送带向自动冰箱发伞今,把某个碟子或炊具中的成品(或半成品)送回到冰箱指定的格子中存放;4.在厨房内部

21、进行物品传送:在厨房的各个碟子和炊具之间传送原料或半成品;5.输入:命令配菜员为某道菜临时配备原材料;(在本章不作讨论)。6.输出:命令传菜生将炒好的菜送给顾客;(在本章不作讨论)。一条指令执行完后,理想厨房立即自动进行下一个完全类似的、新 的“取指令阅读分析指令一执行指令”的工作。下面我们通过一 个 实例来讲述理想厨房系统的工作机制。这是本章的个重点,因为计算机的工作原理,与之极其相似。0.2理想厨房系统的一个炒菜实例在本节中我们通过炒制一道青菜的例子,来说明理想厨房系统的工作全过程。首先,把青菜放在冰箱地址为5 的格子中,冰箱地址为6 号的格子,预留给炒好的菜使用。菜谱的所有加工步骤(又称

22、为指令)从冰箱地址0 号格开始依次按照顺序存放,编写炒青菜的菜谱如下:地址。的格子中:地 址1的格子中:地址2的格子中:取地址5(中的物品)到R。碟;将R0(倒入炒锅中)炒好后装到R1碟;存R1碟(中的物品)到地址6中;可见,此菜谱一共有3 个加工步骤。开始时理想厨房系统状态如下图0.3(注意:冰箱格子以及理想厨房碟子中存放的物品都用了斜体字)理想厨房自动冰箱碟名碟中物品地址冰箱格子中物品图 0.3R0材料传送带0取地址5到R 0碟R1 厨具1将R0炒好后装到R 1碟:R2 厨师2存R 1碟到地址6中;地址传送带304PC 0 厨房管理员5青菜IR控制传送带6取7菜谱和原料安放完毕后,启动理想

23、厨房系统,开始自动化的工作。1)厨房管理员根据PC碟子中的数字“0”,知道要到地址为0 的格子中取第一条指令(即加工步骤)。于是,厨房管理员向控制传送带上发出一个“取”信号,然后马上将PC碟中的数字“0”复制后放到地址传送带上。这两个信号都会到达冰箱。冰箱收到这两个信号后(知道理想厨房想要得到第0 格中的物品,于是自动冰箱)将 0 号 格 的 内 容“取地址5到R 0罐 复 制 份,将其放到材料传送带上,送往理想厨房。理想厨房收到后,将这条指令放到IR碟中。然后,厨房管理员将PC碟中的原来值增加1,以便为取下,条指令做好准备。取指令工作完成后,理想厨房系统处于如下图0.4状态:碟名碟中物品理想

24、厨房R0R1炊具R2厨师PC1厨房管理员IR取地址5到R 0碟材料传送带地址传送带控制传送带图 0.4地址 冰箱格子中物品自动冰箱0取地址5到R 0碟1将R0炒好后装到R 1碟;2存R 1碟到地址6中;345背菜67指令执行阶段:厨房管理员读到指令存放碟(即 IR 碟)子中去取物品,并且要放到R0碟中。因此,然后马上将5 这个数字放到地址传送带上.中的加工步骤后,知道要到冰箱地址为5 的格管理员向控制传送带上送出一个“取”信号,冰箱知道理想厨房要取5 格中的物品,于是冰箱将地址为5 的格子中的物品“青 鹦取出来,放到材料传送带上。材料传送带上的物品“W,传到理想厨房后,按照指令的要求(通过理想

25、厨房内部的传送带)送到了 R0碟中。第一条指令执行完后,理想厨房系统处于如下图0.5所示的状态:理想厨房碟名碟中物品自动冰箱地址 冰箱格子中物品图 0.5R0青菜材料传送带0取地址5到 R 0 碟R1炊具1将 R 0 炒好后装到R 1 碟:R2厨师2存 R 1 碟到地址6中;地址传送带354PC1 厨房管理员5青菜IR取地址5$JRO碟控制传送带6取72)接下来,开始下一条指令的取指令阶段。完全类似于前条指令,在取指令阶段完成后,理想厨房系统处于如下图0.6状态:理想厨房碟名碟中物品R0青 菜(原料)材料传送带R1炊具R2厨师地址传送带1PC2 厨房管理员IR将 R 0 炒好后装到R 1 碟;

26、控制传送带取自动冰箱地址 冰箱格子中物品01234567取地址5到 R 0 碟将 R O 炒好后装到R 1 碟;存 R 1 碟到地址6中;青菜图 0.6指令执行阶段:管理员阅读并分析指令存放碟中的指令后,命令厨师将R0碟中的物品倒入锅中炒好后装到 R1碟。第二条指令执行完后,理想厨房系统处于如下图0.7状态:理想厨房 自动冰箱图 0.7碟名碟中物品地址冰箱格子中物品R 0青菜材料传送带0取地址5到 R 0 碟R 1熟青菜 炊具1将 R 0 炒好后装到R 1 碟:R2 厨师2存 R 1 碟到地址6中;地址传送带34PC 2 厨房管理员5青菜I R将 R O 炒好后装到R 1 碟;控制传送带673

27、)同理,在第3 条指令的取指令阶段完成后,理想厨房系统处于如下图0.8状态:理想厨房 自动冰箱图 0.8碟名碟中物品地址冰箱格子中物品R 0生青菜 材料传送带0取地址5到 R 0 碟R1熟青菜 炊具1将 R O 炒好后装到R 1 碟;R2 厨师2存 R 1 碟到地址6中;地址传送带3A5青菜PC 3厨房管理员 控制传送带6I R存 R 1 碟到地址6中7指令执行阶段:下面开始执行“存 R 1 碟到地址6中”这条指令。厨房管理员分析指令存放碟中的加工步骤后,知道要将R1碟中的物品,送到冰箱地址为6 的格子中去存放。于是,管理员向控制传送带上发一个“存”信号,然后马上将6 这个数放到地址传送带上;

28、最后,将 R1碟中的物品“熟青菜”放到材料传送带上,送往冰箱。冰箱收到两个来自理想厨房的信号后,知道理想厨房要存放物品到6 格中;于是自动冰箱(的机械手)在材料传送带旁,等待从理想厨房R 1 碟传来物品“熟青菜,一旦到达,自动冰箱就将其取下,并将其存放到地址为6 的格子中。完成后系统状态如图0.9:理想厨房 自动冰箱图 0.9碟名碟中物品地址冰箱格子中物品R 0青菜 材料传送带0取地址5到 R 0 碟R1熟背粢 炊具1将 R O 炒好后装到R 1 碟;R2 厨师2存 R 1 碟到地址6中;地址传送带3A65青菜PC 3 厨房管理员 控制传送带6熟青菜1R存R 1 碟到地址b中;7到此为止,炒青

29、菜这道菜终于大功告成。0.3 理想厨房工作的重要特点现在,我们对刚学到的重点知识,做一个小结:1、顺序性和周期性顺序性:理想厨房每次都只能取得和执行一条指令;一条地址为i 中的指令执行完毕后,才能顺序执行地址为i+1中的指令。周期性:厨房管理员的工作完全是周期性的,即他永远在做:(命令各部件)取指令一阅读分析指令一发出控制命令要求各部件执行指令(简称为取指一译码一执行)这一周期性的动作。只要一启动,理想厨房就永远按照这个周期性的动作,一条一条的顺序地取指令并且执行指令,这样不停地、不知疲倦地快速运行着,直到执行了一条“停止运行”指令或发生严重故障时为止。2、有限和无限有限:厨师会做的各种不同基

30、本加工操作所构成的集合是固定有限的(炒、煎、蒸、煮、烤等几十种),也就是说厨师学不会任何一种新的基本加工操作。房房管理员能看懂的各种不同种类加工步骤所构成的集合也是固定有限的(从冰箱取物品、存物品到冰箱、厨师的各种不同加工方式、配菜员输入原材料到冰箱或厨房、传菜生输出菜肴给顾客等)。无限:然而,人们可以为理想厨房编写出来的菜谱数量是无限制的。因此,理想厨房可以炒出菜的品种总数也是没有限制的。3、智者与白痴理想厨房中的厨师和厨房管理员都是不知疲倦的、机械化的“白痴”,在厨师或厨房管理员的“大脑”中没有任何一道菜的(全部或一部分)加工步骤。加工制作各种菜肴的智慧(即蕴含在加工步骤中的智慧)都是来自

31、于存放在自动冰箱中的菜谱,也就是来自于菜谱的编写者。正是由人们编写出来的可以让理想厨房执行的各种各样的菜谱,才使得原本白痴般的、能力极为有限然而速度却极快的理想厨房系统在炒菜方面显得似乎无所不能!4、主动与被动:在指令执行的三个阶段中,取指令和分析阅读指令是硬件丰到进行的,而在指令的执行阶段,硬件是在软件(即菜谱中的加工步骤)的命令下彼利进行的。5、不变与可变:一个理想厨房系统的硬件组成和结构是不变的,而存放在它的冰箱中的软件(菜谱)却是可以随着客户需要而随时加以改变的;同一个菜谱(菜谱不变)随着加工处理的原材料的种类的不同(原材料可变),可以得到不同的菜肴(菜肴可变)。比如:情炒青菜的菜谱同

32、样可以用来清炒韭菜,只要把生韭菜放到原来放生青菜的指定格中。条指令执行的前两个阶段(取指令、阅读分析指令),参与工作的硬件部件是不变的;而在指令的执行阶段,随着指令类型的不同参与工作的硬件部件是可变的。6、两个中心厨房管理员是执行指令的控制中心;厨 师(加上炊具)是原材料的加工中心。理想厨房系统的工作原理,到此已经全部介绍完毕。在下一章你将看到:理想厨房的工作原理,与计算机的工作原理是极为类似的。因此在本书中,从整体上把握计算机的基本工作原理,就变成为一个比较轻松的名词替换的小游戏。0.4 理想厨房系统与计算机系统术语对照表下面给出两个系统之间的术语对照表,见表0.1。表 0.1 术语对照表理

33、想厨房系统 I电子数字计算机 系 统(简称计算机系统)_ 1硬件设备自动 冰 箱(包含很多大小相等的格子)内存又称为主存,包含很多容量相等的基本存储单元)(冰箱中的)一个格子(内存中的)一个基本存储单元材料传送带数据总线地址传送带地址总线控制信号传送带控制总线理 想 厨 房(包含以下设备)CHJ或称为微处理器(包含以下部件)厨师及炊具算术逻辑单元ALU(又称为运算器)厨房管理员控 制 单 元(又称为控制器)通用碟通用寄存器(或数据寄存器)指令地址存放碟r c指令地址寄存器PC(又称为程序计数器)指令存放碟IR指令寄存器IR状态存放碟程 序 状 态 字 寄 存 器 即(又称为标志寄存器)采购员及

34、配菜员输 入 设 备(键盘、鼠标、网卡、嗨 等)传菜生输 出 设 备(显示器、打印机、网卡、堂 等)自动仓库外 存(硬盘、u盘)2 软件与硬件之间的接口(编写菜谱或程序的基本要素)冰 箱 地 址(即格子的编号)厨师可做的各种炒菜基本动作碟子的名称理想厨房可以执行的所有不同加工动作内存地址(即基本存储单元的编号)算术逻辑单元可进行的各种基本运算寄存器的编号该类型计算机的指令集3.软件特殊菜谱机器语言形式的)程序加工步骤指令原材料数据炒好的菜信 息(或称为结果)精确的普通菜谱高级语言源程序(又称为源代码)简要的普通菜谱伪代码4系统的使用者编写特殊菜谱者用机器语言编程的程序员编写精确的普通菜谱者用高

35、级程序设计语言编程的程序员理想厨房系统的大堂经理和顾客计算机的用户以 匕表中这些与计算机相关的术语,将 在 1.2节进行讲解。与在理想厨房系统上运行一个菜谱极为类似,在电子计算机上运行一个程序时,上表中列出的计算机的各个部件也会协同工作,完成程序给定的任务(参 见 1.2节)。学习了理想厨房这个例子,理解计算机原理就变得非常容易了。0.5本章习题1、在取一条指令到理想厨房的过程中,哪些部件会依次参与工作?哪个部件在此过程中起着核心控制作用?2、取份原材料的工作过程与取一条指令的工作过程有什么区别?3、考虑一下为理想厨房编写的菜谱与给普通人看的菜谱有何不同点?4、编写一个香菇炒青菜的菜谱。5、写

36、出三条传送带各自的职责。哪传送带是可以双向传递的?在取指令时,材料传送带是双向的还是单向的?第一章二进制的数和码一一捷径有时候是一条弯路。一一万事开头难。计算机能够“理解和懂得”的语言是二进制机器语言,计算机能够直接加工处理的,都是二进制的数和码。本 章 1.1 对二进制进行了简介,其中最重要的概念是:字节、二进制的数和码;世界上的各种事物如何通过编码用二进制位串来表示(或近似表示)。1.2 对计算机的基本构成成分、机器语言、计算机的基本工作原理进行了简介。1.1 二进制简介为了从整体上把握计算机的基本工作原理,并为后面的编程学习奠定扎实的基础,读者必须事先对数字信号、二进制及其相关知识有个比

37、较清晰的、整体的简明了解。以下进行简要介绍。1.1.1 二进制与二进制数的基本概念十进制数所对应的二进制数(所对应的十六进制数)0001112102311341004510156110671117810008910019101010A(或 a)111011B(或 b)121100C(或 c)131101D(或 d)141110E(或 e)151111F(或 f)161000010表 1 部分十进制数与二进制数(和十六进制数)数值对照表二进制就是只能用数字“0”和“1”来进行计数的数字系统。二进制加法运算的重要规则是:1+1=10,即两个1 相加,就产生了向高位的进位即“逢二进一”(做减法时则是

38、“借一当二”),类似于十进制中的“逢十进一”(做减法时则是“借一当十”)o 其它二进制加法规则更简单:0+0=0、0+1=1、1+0=1。与十进制数类似,在一个二进制数中,靠左边的数字是高位数,靠右边的数字是低位数,其中最左边的位称为最高位。我们经常用一对圆括号括住一个数值,并在圆括号外的右下角加一个整数下标,用此下标来表示该数值是几进制的(但是对于十进制数一般不用圆括号和下标)。比如:(1 0 1 1)1 6是一个十六进制数:而(1 0 1 1)2 是一个二进制数。1.1.2二进制数的多项式展开表示一个十进制整数,其数值可用以下多项式展开来表示:比如3 7 8 537 8 5=3 X 1 0

39、3+7 X 1 02+8 X 1 0+5 X 1 0 (1)我 们 把(1)式 中 1 0 的几次方称为权重,权重左边的乘数称为系数。(1)式中共有4个系数,从左到右依次是:“3系“7”、“8”、“5”,权重依次分别是1 0:、U、1 0;1 0%可见,用这种记数法表示数值时,越左边的系数,所对应的权重越大,所以就越重要。权重中的基数(即底)与表示该数的进制是一样大的,在十进制数中都是1 0。类似的,任意个二进制整数,其数值也可用多项展开式来表示:比如二进制整数1 01 1(1 01 1)2=1 X 23+O X 22+1 X 2 +1 X 2 (2)11如果完全用二进制展开表示,则应当是:(

40、1 01 1)2=1X1O+OX1OIO+1X1O+1 X 1 0,系数和权重都用二进制表示,但人们一般仅将系数用:进制表示。(2)式中系数从左到右依次是:“1”、“0”、“1”、“1”,而 权 重 依 次 分 别 是 2 2,、2 (注意:这里的权重是用十进制来表示的。如果权重也用二进制,则应当分别是二进制的1 0.1 0,1 0,1 0)o展开式中系数的最大值一定比进制数小1,比如:在十进制记数系统中,系数的最大值是 9,而在在二进制记数系统中,系数的最大值是1。1.2 二进制相关术语简介:位、位串、字节下面,我们来熟悉一些与书写、存储或传输串二进制数字有关的术语。1.2.1 位(b i

41、t):书写、存储或传输单个二进制数字,我们将其称为“位 (b i t)或“比特”。单 个“位”中的二进制数字不是0 就 是 1,再没有别的可能数字。任何一个只能处在两种不同稳定状态的电子元件(触发器、电容等)或者某种均匀介质(比如覆盖着磁性颗粒的金属圆盘)表面上的一个小点,都可以用来(间接)表示和存储二进制的一个“位”。如果用电容充满电状态表示二进制数“1”,就可以用电容放完电的状态来表示二进制数“0”。1 2 2 位串及其长度:多个二进制数字顺序排列在一起,称之为“位串”(有些教科书称为位模式)。位串中含有的数字总个数称为位串的长度。比如:位 串 1 001 1 0的长度是6。处于位串左边的

42、位称为高位,处于位串右边的位是低位。位于位串最左边的位,称为最高位。1.2.3 度量位串长度的基本单位字 节(B y t e)“位”这个二进制最小度量单位太小了,通常用起来很不方便。现代的绝大多数计算机和一些数字处理设备,大多数是以长度为8的位串字节来作为度量(部件或设备的)数据存储容量大小的一种基本单位。把长度为8的一个位串称作为一个字节,长度为1 6 的一个位串称为2个字节等等。长度为n的位串,一共有n/8 个字节。也就是说,一个位串的长度,既可以用位串中的总位数来度量,也可以用位串所具有的字节数来度量。1.2.4 二进制数据存储和传输的一些其它常用单位K B M 3和 字 节(B y t

43、 e)这个基本单位虽然大小是位(b i t)这个最小二进制单位的8 倍,但是在很多场合仍然还是显得太小。更大的常用单位有在以下叙述和各种资料、书籍中,经常用字符 B 来代表术语字节B y t e):千字节:1K B =1024B =2 B兆字节:1N B =1024K B =2,0K B =2MB =10485 76 B (约为一百零五万字节)吉字节:1G B =102敏B =2”“B =1073742814 B (约十亿七千多万字节)需要引起注意的是:相邻单位之间,都 是 1024倍的关系,而不是1000倍的关系。1.2.5 位串的通常传输方式并行或串行:一个长度为n的位串,既可以用n 根并

44、排导线同时进行传输,每根导线传输个位即并行传输(这种传输方式速度很快,但要用多根导线);也可以只用一根导线,分为n个相等时间段,一位一位地依次先后进行传输即串行 传 输(这种传输方式速度较慢,但只要用一根导线)。在导线中如果用直流电的高电平(即有电流通过)来传输1,就可以用低电平(即无电流通过)来传输0。在计算机内部全部使用二进制的数或码,但由于二进制通常太长不好书写,人们在编程和将数据输入计算机时,还是喜欢用十进制(或者十六进制和八进制)。因此,我们必须对用各种进制表示的数如何转化成别的进制数有个基本了解。1.3 各种进制数之间的转换1.3.1 二进制整数转化成十进制整数任意一个二进制整数,

45、其数值可用以下展开式来表示:比如二进制数整1011(1011)2=1X 23+O X 22+1X 2+1X 20(2)此二进制数的值,等于十进制的1X 8+0X 4+1X 2+1X 1=8+2+1=11(3)由此可以得到二进制整数转化成十进制整数的一般方法:只要将一个二进制整数(比如1011)展开后的(2)式中的每一位的系数值(采用十进制乘法规则)乘以这一位转化成十进制数后的权重(即 2 的几次方),然后再将乘积项的数值(采用十进制加法规则)逐个相加起来即可。1.3.2 任 意 R 进 制 实 数(或整数)的表示法一般情况下,任 何 个 R进制买藜,都可以紧凑地表示为:(+r.ir.2.r.,

46、)K(1.3)(在计算科学中,R通常是2,8,10,16中的某一个正整数)其中的任何一个(系数)金 都是位于0 到 R-1之间的一个正整数,r0是个位数,口是小数点后的第一位数,珀是最高位数。r.m是小数点后的最低位数。如果小数点后的所有(系数)与、r.2、F 等都为0,则(L 3)表示一个整数。将任意一个R 进制数扩大R 倍(即乘以R),只需将小数点右移一位即可;类似地,将任意一个R 进制数缩小R 倍(即除以R),只需将小数点左移一位即可。其中R等 于 1 0 是人们最为熟悉的十进制数,这 种(可以带小数点的)卜 进制数的简洁紧凑表示方法,是由古代印度人发明的(来源于人有十个手指)。任何一个

47、R进制实数,也都可以用多项式展开表示为:+(r XR+rn.iXRn ,+.+r,XR+r0XR+r.2 X 7?-2+.+r.,X R m)(耳称为系数,R i 称为权重)在 R进制数值的多项式展开表示法中,不使用小数点。人们最为熟悉的仍然是R等于1 0 时的多项式展开式。1.3.3 将十进制整数转化成二进制数把一个十进制转整数(比如8 9)换成二进制,只需要用新的基数2 (采用十进制除法规则)除以这个十进制数(8 9),余数(1)是结果左边的下一位数字,商(4 4)是新的被除数,然后重复这个过程,直到商为0时终止。短除法就是按照这个转换原理,把要转换的十进制整数不断的除以2,然后取余数,商

48、作为新的被除数,直到商为0的时候结束。然后把余数倒着写出来。例如:把 8 9 转换成二进制数22222228 9I 4 4I 2 2|1 1I 5I 2I 10001101即:8 9=(1 0 1 1 0 0 1)2延伸与拓展:转换规则的技术内幕要想明白这种转换规则的道理,请考虑十进制整数与它等值的二进制整数的方程式:8 9=(r X2+.+r2 X22+r,X2+r0X20)2其中的二进制系数,b、等等应该如何求得?可将该方程式的左边的十进制整数整除2,得到 商 44和余数1;与此同时将方程式的右边的二进制整数的小数点左移一位(等价于整除2)o 这样方程式右边将得到 rnX 2n-+.+r2

49、X2+n X2+r0X 2-1;显然,商 44应当与二进制整数rnX 2a i+.+r2X 2i+riX2相等;而 89整除2 所得到的余数1(除以2 的余数不是0 就 是 1)就等于方程右边的系数r(系数r不是0 就 是 1)。同理,从方程式4 4 =rnX2n-,+.+r2X2+X20,我们可以用完全相同的方式得到系数口的值,转换工作直到方程左边的商为0 时结束。注意:短除法也完全适用于将一个十进制整数转换为一个任意R(R2)进制的整数,只需将除数由 2 替换为R 即可。1.3.4将十进制小数转化成二进制小数1 0 进制小数转换为2进制小数的转换过程,与整数的进制转换过程有些类似而计算方法

50、又恰恰相反:不是用新的基数2除这个数,而是用新基数2去乘它。乘法的进位(进到个位的数字)将成为答案右边的下一位数字,乘法结果中的小数部分将成为新的被乘数,整个过程直到乘法结果中的小数部分为0时终止。例如:把十进制小数0.3 7 5 转换成二进制小数:0.3 7 5 X 2 =0.7 5 0 0 /进位0,小数点后的第一位0.7 5 X 2 =1.5 0 1 进位1,小数点后的第二位0.5 X2=1.0所以,(O.3 7 5)IO=(O.O 1 1)21进位1,小数点后的第三位延伸与拓展:转换规则的技术内幕要想明白这种转换规则的道理,请考虑十进制小数与它等值二进制小数的方程式:0.735=(0.

51、r.j r.2.r.m)2 其中的二进制系数J、Q 等等应该如何求得。可将该方程式的左边乘以十进制的2,与此同时将方程式的右边的小数点右移一位。这样方程式左边将得到一个整数值1,这个整数值1 与二进制小数最左边的系数J 相等。去掉整数部分后,方程式两边剩下的小数部分的数值仍然是相等的,即 0.47=0.口口 而。注意:这个规则也完全适用于将一个十进制小数转换为一个任意R(R2)进制的小数,只需将乘数由2 替换为R 即可。1.3.5 将十进制实数转化成二进制实数一个十进制实数,只要将它的整数部分和小数部分分别转化成二进制数,然后将其合起来即可。1.3.6 二进制整数转换成十六进制整数虽然计算机用

52、二进制存储和传输各种数据,但是它并不适合在计算机外部(比如在源程序中)表示数据。因为与十进制数据相比,二进制 数 据(即位串)过于长了。然而,十进制又不像二进制那样能够直接显示存储在计算机中的是什么。在二进制位串和十进制数字之间不存在明显的关系,它们之间的转换很不方便。为此,人们想到了使用十六进制(或八进制)。在计算机外部用十六进制来表示计算机内部的二进制数据。由于二进制和十六进制数之间的转换非常快捷,这样就能比较好的解决以上难题。十六进制数用1 6 个符号来表示一个数。字符集是 0,1,2,3,4,5,6,7,8,9,八,8,0 旦 尸 .注意符号人5。,口足下(也可用小写)的值分别等于十进

53、制的10,11,12,13,14,15。表 1.4是二进制、八进制、十六进制整数对照表。利用此表就能很快实现二进制和十六进制数之间的转换。表 1.4二进制、八进制、十六进制整数对照表二进制八进制十六进制二进制八进制十六进制000100010811110011191022101012A(或 a)1133101113B(或 b)10044110014C(或 c)10155110115D(或 d)11066111016E(或 e)11177111117F(或 f)下面介绍二进制整数与十六进制整数(或八进制)之间是如何转换的。一个二进制数,比如:(1011110)2=1X26+OX25+1 X24+1

54、X23+1 X22+l X2+0X2/展开=(1 X 22+0 X 2 +1 X 2 )X 24+(1 X 23+1 X 22+1 X 21+0 X 2 )X 2 /从低位开始每 4 个分为一组=(1 0 1)2X 24+(1 1 1 0)2 X 2=5 X 1 6+E X 1 6 将圆括号中的二进制数经过查表1.4 转换为1 6进制数=(5 E)1 6也就是说,只要将一个二进制数,从最低位开始,每 4个二进制的位直接通过查表1.4,就可以快速转变成十六进制的1 位数。1 0 1 1 1 1 0 /从最低位开始每4 位二进制分为1 组I I5 E 查找1.4表直接得到十六进制数由此可见,二进制

55、整数转换成十六进制整数是很方便快捷的,只要直接查找表1 4 即可,不需任何转换计算。由此也可见,一个较长的二进制数转换成十六进制数后确实简短多了.二进制整数转换成八进制整数与此完全类似,二进制与八进制之间的转换只需使用表1.4的前两列。1.3.7十六进制整数转换成二进制整数由于上述二进制整数转换成十六进制整数的整个过程完全是可逆的。所以,完全可以通过 查 表 1.4,将一个十六进制转化成二进制。例如十六进制(E 5):通过查表十六进制的E对 应 1 1 1 0,十六进制的5 对应0 1 0 1。注意:一个十六进制数字要转化成四位二进制数字,不足四位要补成四位;比如:十六进制5 对应着二进制0

56、1 0 1 而不是对应着二进制1 0 1。所以,十六进制数:E 5I I二进制数:1 1 1 0 0 1 0 1结果为:(E 5)1 6=(1 1 1 0 0 1 0 1)21.4二进制的数和码如果计算机仅仅只能够对一些数值进行运算在计算机刚发明的早期年代,确实就是如此那么它的应用范围就必然很狭窄。然而,现代计算机的应用范围却是极其广泛的,几乎深入到生产生活的方方面面。其根本原因在于:现代计算机不仅能够对“数值”进行运算,还能够对间接表示世界上各种各样事物(或状态)的“码”进行不同的处理。也就是说,不仅可以直接用一个二进制位串表示一个无符号的整数,通过各种各样的编码规则还可以用二进制位串表示(

57、或近似表示)文字、图像、声音等世界上的几乎各种事物。所以,我们想要真正懂得计算机并且学好编程,就不仅要熟悉二进制的“数”,还必须对一些常见的二进制的“码”有一个比较清晰的整体了解。以下这些内容虽然比较繁琐,然而理解起来却并不困难。十进制的数和码:我们先来看一看十进制数字系统中数与码的区别。如果3 7 8 5 用于表示数,则越高位的数字越重要(因为权重越大,在十进制数3 7 8 5 中,“3”的权重是1 0 ,而“5”的权重是1 0 );而 3 7 8 5 用来表示非数值的码,则每一位数字都同替事攀。码值仅相差一,所代表的意义就可以有巨大的区别。比如:3 7 8 5 可以代表汉字“大”,而 3

58、7 8 6可以代表汉字“小对数值进行运算是很有必要的,然而对间接表示事物的码进行运算通常都是毫无意义的(除非码被用来间接表示数值)。虽然用十进制3 7 8 5 数字串只能直接表示唯一一个非负整数,这个数的值是三千七百八十五;然而同样一个十进制数字串“3 7 8 5”,通过某种编码,可以表示的事物种类却是无限制的:既可以表示码为3 7 8 5 的一个汉字,又可以表示住回别的什么-万个(编 码 从 0 0 0 0到 9 9 9 9)同类型事物中的码值为3 7 8 5 的一个特定事物。与十进制一样,二进制数与二进制码也有完全类似的区别。只不过在二进制中,只能用数字0 和 1 组成的位串,来表达任何大

59、小的数值或者表示具有任何含义的码。一位二进制数和码如果用单个位来表示整数值,只能直接表示0和 1 这两个值中的一个。如果用单个“位”来表示码,则能够用来对任何(同 属 利 类 型 的)两种不同事物(或状态)制定编码规则。比如:用0表 示“假”,用 1 表 示“真”;用 0表示状态“关”,用 1表示状态“开”;用 0表示“否”,用 1 表示“是”等等。存,取、黑,白、读,写、阴,阳、上,下、好,坏、喜,怒、男,女、大,小 等等,都可用1 位二进制码来表示。两位二进制数和码如果用长度为2的一个位串来直接表示整数值,则只能够表示0 0 (其值等于0)、0 1 (其值等于1)、1 0、1 1 这 4个

60、二进制非负整数值中的某一个。如果用长度为2的位串来进行编码,由于-共有0 0、0 1、1 0、1 1 这 4 (即 2?)个码值可以使用,则能够用来对属于同一类型的4个不同的事物(或状态)制定编码规则。比如:煎、炒、蒸、煮 、加,减,乘,除、A,B,C,D、-2,-1,0,1 、宿舍、教学楼、食堂、图书馆、前、后、左、右 等等,都可用长度为2的二进制码来间接表示。编码和解码的一个实例通过制定一个编码规则,比如:可以规定用0 0 表 示 D、0 1 表 示aC 1 0 表 示“B”、1 1表 示“A”,这就可以构成一张用4 个码来表示4 个字符的编码解码表【注 1】,见 表 L 2。【注 a:如

61、果把码0 Q 0 1、la 1 1 看成电视速配节目中4 个未婚男士的代号,字 符 A B G D 看 成 4个未婚女士的代号。所谓的“编码解码表二只不过是所有男士与所有女士之间的一张特定的、“皆大欢喜”的快速配对表而已。用严格的数学术语来讲,所谓制定编码规则,无非是制定了一张两个集合&Q 0 1,1 Q 1 1)与 H B C D之间的所有元素的一对一的映射表而已。二进制码字符0 0D0 1C1 0B1 1A表 1.2 4个字符的一张编码解码表有了这张编码解码表,先通过对字符串“C A B”进行编码,就可以用一些码值构成的二进制位 串“0 1 1 1 1 0”,在二进制的数字信号处理设备中间

62、谈地存储和传输这个字符串。到达目的地后,接收方也要具有同样的一张“编码解码表”,才能将这种接收到的二进制位串,翻译成它的本来意义。比如将二进制位串0 1 1 1 1 0 翻译成字符串 C A B ,这个过程称为解码。编码 发送 接收 解码C A B 0 1 1 1 1 0 0 1 1 1 1 0 C A B图 1.1 字符串的编码、发送、接收、解码全过程长度为n的二进制数和码长度为n的位串,可以表示的最大二进制非负整数1 1 1 1 (一共n个 1)究竟是多大呢?这很简单,将 由 n个 1构成的此二进制数加上1,可得到1 0 0 0(1的后面一共有n个 0)。由这个数的多项式展开可知,它的大小

63、就是2”。因此二进制整数1 1 1 1 (一 共 n个 1)的大小为2-1。因此,如果用长度为n的位串来直接表示一个非负整数,则可以表示的二进制数值从小到大依次是0、1、1 0、1 1、直 到 1 1 1 1 1 1 (一 共 n个 1,其值等于2 -1),一共有2”个数。用长度为n的位串来进行编码,由于一共有2 个码值可以使用,则能够用来对任意的2rI 个同类事物所构成的集合制定一对一的编码规则。世上的绝大多数事物都可通过编码来间接表示不添加任何别的非数字符号(正负号和小数点),用一个数字固定的位串,只能够直接表示一个非负整数(在计算机科学中,经常把非负整数称为无符号整数),有符号整数和实数

64、都不能直接用位串来表示。但是,用位串作为码,可以间接表示的事物那娄却是无限的。世上一切可数的事物(或状态)都可以用各种码来间接表示。幸运的是,世上大多数人类通常可以感知到的不可数的事物(比如图像、声音、实数等)都可以通过编码来近似表示。无 效 码(或称为非法码)在可使用的码比(要进行编码的)集合中的元素多的情况下,就会存在一些无效码,这些无效码不代表集合中的任何一个元素。究竟哪些是无效码,是由具体编码规则决定的。比如用长度为3 的位串来对某个集合中的所有元素进行编码,可用的码值一共有8(即 外个,集合中如果只有5 个元素,那么必然有(8-分3 个码是无效码。一般情况下,长 度 为 n 的位串一

65、共有7 个码,如果用来对n r 个元素构成的集合进行编码,而 且 Z 大于国则总共有Z i n 个无效码。不定长度编码还有一类码的长度不一样的编码方式,常常用比较短的码表示集合中经常出现的元素;比如哈夫曼编码就是一种不定长度的编码(关于哈夫曼编码请参见其它书籍或资料)o1.6 表示字符的编码1.6.1 A S C I I 码“目前计算机中用得最广泛的字符集及其编码,是由美国国家标准局(A N SI)制定的 A SC I I 码(A m e r i c a n St a n d a r d C o d e f o r I n f o r m a t i o n I n t e r c h a n

66、 g e,美国标准信息交换码),它已被国际标准化组织(I SO)定为国际标准,称 为 I SO 6 4 6 标准。适用于所有拉丁文字字母,A SC I I 码 有 7位 码 和 8位 码(即扩展A S C H 码)两种形式。7位 A SC I I 码是用七位二进制数进行编码的,可 以 表 示 1 2 8 个字符。第。32号 以 及 第127号(一 共34个)是控制字符或通讯专用字符,如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BEL(振铃)等;通讯专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等;第33126号(共94个)是可打印的普通字符,其 中 第4857号 为。9十个阿拉伯数字;6590号 为26个大写英文字母,97122号 为26个小写英文字母,其余为一些标点符号、运算符号等。注意:在计算机中,1个长 度 为 7 的 ASCH码 值 通 常 采 用 1 个字节来存储,其最高位可以用来作奇偶校验位。对 于Unicode码、对于绝大计算机中用来表示有符号数的补码、表示有符号实数的编码(IEEE745标准)的讲解,对于在计算机中如何用码来表示(或近似

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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