1、1计算机基本知识一种有着神奇的“魔力” 和“ 智能 ”的人造设备正在迅速地、彻底地、默默无闻或者令人震惊地改变和丰富我们所生活的大千世界。 这个看起来很不起眼的,在一些场合被称为“ 电脑”的电器设备,是如何具有如此神奇的 “魔力”和“智能”的?本章将带你开始解开这个谜。11 节介绍理想厨房系统,1.2 节通过一个炒菜实例讲解理想厨房各部件是如何密切配合工作的。1.3 是一张理想厨房系 统与计算机系统的对照表 1.4 到 1.8 介绍了二进制、 计算机、机器指令和指令集、数和码。1.09 对计算机的重要特点进行了概括性的 总结、1.11 是计算机与理想厨房的一些重要区别。其中 1.2、1.3、1
2、.4、1.9 和 1.11 是本章重点。学过大学计算机基础或计算机导论的读者,本章不是必学的内容。但浏览一下1.2、1.3 和 1.9 节应该是有益的。电子数字计算机从发明到现在,不过大约 70 年的时间。然而计算机的发明、改进和普及,却彻底地变革了人类社会。计算机本身也变得越来越复杂、快速、小巧、种类繁多。但大多数计算机都遵循冯.诺伊曼体系结构。这为我们理解大多数计算机的基本工作原理提供了方便。本节不需要任何的预备知识,只要你能把本节认真仔细地学习两遍,你就能够真正懂得看似极为神秘莫测、奥妙无穷,到目前为止人类有史以来最伟大、最神奇而又最为复杂的发明计算机(又称为“电脑” 。这个伟大发明,汇
3、集了几代人中很多杰出人士的聪明才智和研究成果)是如何工作的基本原理。为达此目的,笔者付出了极大的努力,找到了一种比较好的比喻方法理想厨房系统,由此开始我们的真正理解计算机工作原理的,激动人心的探索旅程。1.1 理想厨房系统:理想厨房系统,是一个通过顺序执行菜谱中的各个加工步骤,把原材料加工成菜肴的系统。它由硬件(理想厨房、自动冰箱和三条传送带)和软件(菜谱)组成。1) 硬件部分:理想厨房系统,主要由以下三个硬件部件(即实物部件)构成理想厨房、自动冰箱和三条传送带。自动冰箱:由非常多的大小一样的格子组成。负责临时保存菜谱、原材料和菜肴。是不是很奇怪?菜谱竟然要和原材料一道,统一存放在冰箱中!三条
4、传送带:负责理想厨房与自动冰箱之间的通信及物品(菜谱中的加工步骤、原料和菜肴)传送。理想厨房:负责根据从菜谱中取到的加工步骤进行炒菜以及进行相关的控制工作。2) 软件部分:菜谱是理想厨房系统中一个无重量、无体积、不会损坏、可经常更换的,但又极为重要的软件部件(即信息流部件) 。菜谱由一个个加工步骤顺序组成。注意:术语“理想厨房系统”与“理想厨房”是有区别的,理想厨房只是理想厨房系统中的一个组成部分。理想厨房系统的构成简图如图 1.1 所示:理想厨房 自动冰箱 碟名 碟中物品 格子编号 格子(存放加工步骤或原2料)R0R1 厨具R2 厨师PC 厨房管理员IR 材料传送带地址传送带控制传送带012
5、34567图 1.1 理想厨房系统的构成简图(但图中没给出具体的软件)理想厨房中各种碟子的作用R0、R1、R2 碟是一些通用临时存放碟,用来临时存放从冰箱取来的原材料或加工了的半成品或成品。PC 碟:存放下一条要执行的加工步骤位于冰箱的哪一格中(这是一个格子的数字编号)。IR 碟:用来存放刚从冰箱取过来的加工步骤。 理想厨房执行菜谱的一个加工步骤,其流程完全是周期性的。 厨房管理员首先要根据 PC 碟中的值(这个值表示:将要执行的菜谱中的加工步骤,位于冰箱的哪一格中) ,通过三套传送带的协调工作,到自动冰箱的指定格中去取菜谱中的一个加工步骤。取到理想厨房并把它放到 IR 碟中后(PC 碟中的值
6、将会加上 1,为取下一个加工步骤做好准备) ,管理员还要阅读并分析此加工步骤;然后根据此加工步骤的指示,去做以下七类工作中的一种: 1通过三套传送带,命令自动冰箱把指定地址格子中的(炒菜加工步骤马上要用到的)原材料(通过材料传送带)传送到理想厨房中来即取物品;2命令厨师按照指令(即加工步骤)的要求,对原材料作一个基本加工操作(做“炒” , “蒸” , “煮”等基本操作步骤中的一个炒菜动作)即加工原材料。 3通过向三套传送带向自动冰箱发命令,把某个碟子中的成品(或半成品)送回到冰箱指定的格子中存放即存物品; 4在厨房的各个碟子或炊具之间传送原料或半成品在厨房内部进行物品传送 ;5根据某个状态碟中
7、的具体条件(比如预定时间到了、温度够了) ,不按正常顺序取出并且执行下一条指令,而是根据此指令中给出的(冰箱格子的相对或绝对)地址,跳转到那一格中去取下一条指令即进行跳转。6命令传菜生端菜给顾客;即输出。7命令配菜员为某菜配原材料;即输入。一个加工步骤执行完后,理想厨房立即自动进行下一个完全类似的、新的 取加工步骤 执行加工步骤 的周期。下面我们通过一个实例来讲述理想厨房系统的工作机制。这是本章的重点内容。1.2 理想厨房系统的一个炒菜实例:现在,我们通过炒制一道香菇炒菜心的例子来说明理想厨房系统的工作过程。 3首先,把香菇放在冰箱地址为 5 的格子中,把菜心放在冰箱地址为 6 的格子中,冰箱
8、地址为 7 号的格子,预留给炒好的菜使用。首先,把香菇放在冰箱地址为 5 的格子中,把菜心放在冰箱地址为 6 的格子中,冰箱地址为 7 号的格子,预留给炒好的菜使用。 菜谱的所有加工步骤(又称为指令)从冰箱地址 0 号格开始依次按照顺序存放,编写香菇炒菜心的菜谱如下:地址 0 的格子中: 取地址 5(中的物品)到 R0 碟;地址 1 的格子中: 取地址 6(中的物品)到 R1 碟;地址 2 的格子中: 将 R0 碟和 R1 碟倒入炒锅中炒好倒回 R0 碟;地址 3 的格子中: 送 R0 碟(中的物品)到地址 7 中; 可见,一共有 4 个加工步骤。开始时理想厨房系统状态如下图 1.3(注意:冰
9、箱格子以及理想厨房碟子中存放的物品都用了斜体字)理想厨房 自动冰箱 碟名 碟中物品 地址 冰箱格子中物品R0R1 厨具R2 厨师PC 0 厨房管理员IR 材料传送带地址传送带0控制传送带取01234567取地址 5 到 R0 碟取地址 6 到 R1 碟;将 R0 和 R1 炒好倒入 R2 碟;送 R2 碟到地址 7 中;香菇菜心 图 1.3菜谱设置完毕后,理想厨房系统开始自动化的工作。1) ,厨房管理员根据 PC 碟子中的数字“0” ,知道要到冰箱地址为 0 的格子中取第一条指令(即加工步骤) 。于是,厨房管理员向控制传送带上送出一个“取”信号,然后马上将PC 碟中的数字“0”复制后放到地址传
10、送带上。这两个信号都会到达自动冰箱。自动冰箱收到这两个信号后,将 0 号格的内容复印件“ 取地址 5 到 R0 碟 ”放到材料传送带上,送往理想厨房。理想厨房收到后,将这条指令放到 IR 碟中。然后,厨房管理员将 PC 碟中的原来值增加 1,以便为取下一条指令做好准备。取指令周期完成后,理想厨房系统处于如下图 1.4 状态: 理想厨房 自动冰箱 碟名 碟中物品 地址 冰箱格子中物品4R0R1 厨具R2 厨师PC 1 厨房管理员IR 取地址 5 到 R0 碟材料传送带地址传送带控制传送带01234567取地址 5 到 R0 碟取地址 6 到 R1 碟;将 R0 和 R1 炒好倒入 R2 碟;送
11、R2 碟到地址 7 中;香菇菜心 图 1.4 厨房管理员读到指令存放碟(即 IR 碟)中的加工步骤后,知道要到冰箱地址号为 5 的格子中去取原材料,并且取来后要放到 R0 碟中。因此,管理员向控制传送带上送出一个“取”信号,然后马上将 5 这个数放到地址传送带上。冰箱收到“取”信号后,知道理想厨房要取物品。然后,冰箱从地址传送带得到了 5,于是冰箱将地址为 5 的格子中的物品“ 香菇 ”取出来,放到材料传送带上。 材料传送带上的物品“ 香菇 ”,传到理想厨房后,按照指令的要求(通过厨房内部的传送带)送到了 R0 碟中。第一条指令执行完后,理想厨房系统处于如下图 1.5 所示的状态:理想厨房 自
12、动冰箱 碟名 碟中物品 地址 冰箱格子中物品R0 香菇R1 厨具R2 厨师PC 1 厨房管理员IR 取地址 5 到 R0 碟材料传送带地址传送带5控制传送带取01234567取地址 5 到 R0 碟取地址 6 到 R1 碟;将 R0 和 R1 炒好倒入 R2 碟;送 R2 碟到地址 7 中;香菇菜心图 1.52)接下来,开始执行下一条指令的取指周期,类似于前一条指令,在取指周期完成后,理想厨房系统处于如下图 1.6 状态:理想厨房 自动冰箱 碟名 碟中物品 地址 冰箱格子中物品R0 香菇R1 厨具R2 厨师PC 2 厨房管理员IR 取地址 6 到 R1 碟;材料传送带地址传送带1控制传送带取0
13、1234567取地址 5 到 R0 碟取地址 6 到 R1 碟;将 R0 和 R1 炒好倒入 R2 碟;送 R2 碟到地址 7 中;香菇菜心图 1.65管理员分析指令存放碟中的加工步骤(指令)后,知道要到冰箱地址为 6 的格子中去取原材料,并且放到 R1 碟中。因此,管理员向控制传送带上发一个“取”信号,然后马上将 6 这个数放到地址传送带上。冰箱收到“取”信号后,知道理想厨房要取东西,然后,冰箱从地址传送带得到了 6,于是冰箱将地址为 6 的格子中的物品“ 菜心 ”取出,放到材料传送带上。 材料传送带上的物品“ 菜心 ”,传到理想厨房后,按照指令的要求通过厨房内部的传送带被自动送到 R1 碟
14、中。第二条指令执行完后理想厨房系统处于如下图 1.7 状态: 理想厨房 自动冰箱碟名 碟中物品 地址 冰箱格子中物品R0 香菇R1 菜心 厨具R2 厨师PC 2 厨房管理员IR 取地址 6 到 R1 碟;材料传送带地址传送带6控制传送带取01234567取地址 5 到 R0 碟取地址 6 到 R1 碟;将 R0 和 R1 炒好倒入 R2 碟;送 R2 碟到地址 7 中;香菇菜心图 1.73)在第 3 条指令的取指周期完成后,理想厨房系统处于如下图 1.8 状态:理想厨房 自动冰箱碟名 碟中物品 地址 冰箱格子中物品R0 香菇R1 菜心 厨具R2 厨师PC 3 厨房管理员IR 将 R0 和 R1
15、 炒好倒入 R2 碟;材料传送带地址传送带2控制传送带01234567取地址 5 到 R0 碟取地址 6 到 R1 碟;将 R0 和 R1 炒好倒入 R2 碟;送 R2 碟到地址 7 中;香菇菜心图 1.8厨房管理员看到 IR 碟中的内容后,命令厨师将 R0 碟和 R1 碟中的原材料倒入锅中炒好后,倒入 R2 碟中。完成后如图 1.9理想厨房 自动冰箱碟名 碟中物品 地址 冰箱格子中物品6R0 香菇R1 菜心 厨具R2 香菇菜心 厨师PC 3 厨房管理员IR 将 R0 和 R1 炒好倒入 R2 碟;材料传送带地址传送带控制传送带01234567取地址 5 到 R0 碟取地址 6 到 R1 碟;
16、将 R0 和 R1 炒好倒入 R2 碟;送 R2 碟到地址 7 中;香菇菜心图 1.94)第 4 条指令在取指令周期完成后,理想厨房系统,处于如下图 1.10 状态:理想厨房 自动冰箱碟名 碟中物品 地址 冰箱格子中物品R0 香菇R1 菜心 厨具R2 香菇菜心 厨师PC 4 厨房管理员IR 送 R2 碟到地址 7 中;材料传送带地址传送带控制传送带01234567取地址 5 到 R0 碟取地址 6 到 R1 碟;将 R0 和 R1 炒好倒入 R2 碟;送 R2 碟到地址 7 中;香菇菜心图 1.10下面开始执行“ 送 R2 碟到地址 7 中 ”这条指令。厨房管理员分析指令存放碟中的加工步骤后,
17、知道要将 R2 碟中的物品,送到冰箱地址为 7 的格子中去存放。于是,管理员向控制传送带上发一个“存”信号,然后马上将 7 这个数放到地址传送带上,最后将 R2碟中的物品“香菇菜心”放到材料传送带上,送往冰箱。 冰箱收到“存”信号后,知道理想厨房要存放物品,然后,冰箱从地址传送带得到了7,于是自动冰箱(的机械手)在材料传送带旁,等待从理想厨房 R2 碟传来物品“ 香菇菜心 ”,一旦到达,自动冰箱就将其取下,并将其存放到地址号为 7 的格子中。完成后系统状态如图 1.11:理想厨房 自动冰箱碟名 碟中物品 地址 冰箱格子中物品7R0 香菇R1 菜心 厨具R2 香菇菜心 厨师PC 4 厨房管理员I
18、R 送 R2 碟到地址 7 中;材料传送带地址传送带控制传送带01234567取地址 5 中到 R0 碟取地址 6 中到 R1 碟;将 R0 和 R1 炒好倒入 R2 碟;送 R2 碟到地址 7 中;香菇菜心香菇菜心 图 1.11至此,香菇菜心这道菜终于大功告成了。1.3 理想厨房系统与计算机系统术语对照表理想厨房的工作原理,与计算机的工作原理是极为类似的。下面首先给出两个系统之间的术语对照表,见表 1.1。表 1.1 术语对照表理想厨房系统 电子数字计算机(简称计算机) 1.硬件设备自动冰箱(包含多个大小相等的格子) 内存(又称为主存,包含很多大小相等的基本存储单元) (冰箱中的)一个格子
19、(内存中的)一个基本存储单元材料传送带 数据总线地址传送带 地址总线控制信号传送带 控制总线理想厨房(包含以下设备) CPU(或称微处 理器,包含以下部件 )厨师及炒菜设备 算术逻辑单元 ALU(又称为运算器)厨房管理员 控制单元(又称为控制器)通用临时存放碟 通用寄存器指令地址存放碟 PC 指令地址寄存器(又称为程序计数器 PC)指令存放碟 IR 指令寄存器(又称为 IR 寄存器) 状态存放碟 状态寄存器专用加工容器 专用寄存器采购员及配菜员 输入设备(键盘、鼠标、网卡、U 盘等)传菜生 输出设备(显示器、打印机、网卡、U 盘等)自动仓库 外存(硬盘、U 盘,但同时也属于 输入输出设备) 2
20、.软硬件之间的接口(编写菜谱或程序的基本要素)冰箱格子的地址(即编号) 内存中基本存储单元的地址(即编号)8厨师可做的各种炒菜的基本动作(蒸、炒、炸、煮等)运算器可进行的各种基本运算(算术运算、逻辑运算等)碟子的名称 寄存器的编码或代号 理想厨房可以执行的所有各种加工动作(指令)该类型计算机的指令集3.软件特殊菜谱 (机器语言形式的) 程序加工步骤 (机器)指令原材料 数据 炒好的菜 信息(或称为结果)精确的普通菜谱 高级语言程序(又称为源程序或源代码) 简要的普通菜谱 伪代码4. 系统的使用者编写特殊菜谱者 用机器语言编程的程序员 编写精确的普通菜谱者 用高级程序设计语言编程的程序员理想厨房
21、系统的大堂经理和顾客 计算机的用户在计算机上运行一个程序时,上表中列出的计算机的各个部件会协同工作,完成任务(参见 1.6 节) 。如果没有对理想厨房工作原理的详细讲解,由于出现了太多新的专业术语和名词,人们决对很难在短时间内,全面把握和理解这个计算机系统的工作原理的(对于任何一个初学者,这都是一件极其困难的事) 。1.4 预备知识:二进制及相关知识简介:虽然理论上可以使用任何进制(比如十进制)为基础来制造计算机,但现代计算机都是采用二进制的数字电子信号(制造电子计算机为何用数字信号而不用模拟信号,不用其他进制而用二进制,请参见本章提高部分)进行工作的机器。也就是说,在计算机的内部,只能以二进
22、制的形式来存放、传输需要运行的指令和需要加工的数据的。为了从底层彻底把握计算机的基本工作原理,读者必须事先对二进制有所了解。以下简要介绍相关知识。1.5.1 二进制数的概念首先,来看一张部分十进制数与二进制数的数值对照表:十进制数 所对应的二进制数0 01 1 2 103 114 1005 101 6 110 97 111 8 10009 100110 1010 11 1011 12 110013 110114 111015 1111表 1.2 部分十进制数与二进制数的数值对照表一般情况下,用 n 位二进制可表示的最大正整数值是 2n-1。比如:4 位二进制可表示的最大正整数是 24-1=15
23、(即 1111) 2 。可见,二进制只能用两个数字“0”和“1”来进行计数(或表示各种不同状态) 。二进制加法运算的重要规则是: 1+1=10 ,即两个 1 相加产生向高位的进位。左边是高位数,右边是低位数(此外,其它加法规则还有:1+0=1、0+1=0、0+0=0) 。我们用一对圆括号括住一个数值,并在圆括号外面加一个数字下标,来表示一个数是几进制数:比如(1011) 10 是一个十进制数;而(1011) 2 是一个二进制数。141 将二进制整数转化成十进制整数一个十进制的数,其数值可用以下展开式来表示:比如 3785(3785) 10=3103+7102+8101+5100 (1)我们把(
24、1)式中 10 的几次方称为权重,权重左边的乘数称为系数。 (1)式中共有 4个系数,从左到右依次是:“3” “7”“8”“5”。可见,在数值数据中,越左边的数字(系数)权重越大。类似的,一个二进制数,其数值也可用以下展开式来表示:比如二进制数 1011(1011) 2= 123+022+121 +120 (2)此二进制数的值,等于十进制的 18+04+12+11=8+2+1=(11) 10 (3) 由此可以得到:二进制整数转化成十进制整数的一般方法:只要将该二进制整数(即 1011)展开后的(2)式中的每一位的系数值,乘以这一位的转化成十进制数后的权重(即 2 的几次方) ,然后再将逐个乘积
25、项的数值相加起来即可。练习 1:将二进制数 11010010 转换成十进制。142 将十进制整数转化成二进制数:1. 将十进制数转换成二进制数的短除法:短除法把要转换的十进制整数不断的除以 2 然后取余数,商为 0 的时候结束。然后把余数倒着写出来。例如: 把 84 转换成二进制数0242 221 210 25 22 21 20 8401010110即: (84)10= (1010100)2注意:短除法实际上适用于将一个十进制整数转换为一个任意 n(n2)进制的整数,只需将除数 2 变为 n 即可(参见例题) 。可选练习 1:查阅参考书(比如任何一本计算机导论或大学计算机基础 ) ,看看十进制
26、的纯小数是如何转化为二进制的纯小数的。十进制的实数是如何转化为二进制的实数的。1.5 数和码的含义和区别:什么是数? 数是表 示 事 物 的 量 的 基 本 数 学 概 念 。什么是码?“码”是“编码”的简称。用预先规定的方法将文字、数字或其他对象编成数码,或将信息、数据转换成规定的电脉冲信号。编码是信息从一种形式或格式转换为另一种形式的过程。解码,是编码的逆过程。151 十进制的数和码:我们通过一个例子来说明十进制数字系统中数和码的区别如果 3785 用于表示数,则越高位(即越左边的位)的数字越重要(因为权重越大,在十进制数 3785 中, “3”的权重是 103,而“5”的权重是 100)
27、 。 而 3785 用于表示非数值的码,则每一位都同样重要。码值仅相差一位,所表示的文字(或代表的事物)可以有巨大的区别(比如:3785 表示汉字“前” ,而 3786 表示汉字“后” ) 。 十进制的数字串“3785”由“3” 、 “7”、 “8”、 “5”组成。它既可以表示一个数值为三千七百八十五的十进制数,也可以表示一个码为 3785 的汉字(或者表示任何别的什么10000 个同类事物中的编码为 3785 的一个特定事物) 。 152 二进制的数和码 与十进制一样,二进制数和二进制码也有类似的区别。只不过在二进制中只能用 0 和1 组成的一个二进制数字串,来构成任何大小的数值或者表示具有任何含义的码。位:单个二进制数字我们称之为“位” (bit) 。如果用一个位来表示整数值,只能表示 0 和 1 这两个值中之一。大于 1 的整数值用一个“位”表示不了。如果用单个“位”来表示码,则只能用来对(同属一种类型的)两种不同事物进行编码。比如:用 1 表示“真” ,用 0 表示“假” ;或者用 1 表示动物“猫” ,用 0 表示动物“狗” ;等等。位串及其长度:任意多个二进制数字顺序排列在一起(比如:11011011100) ,我们称之为位串。位串中数字的个数我们称为位串的长度。如果用长度为 2 的一个位串来表示整数值,则能够表示 00(即 0) 、01(即 1) 、