Skip to content

一、绪论

总结

  • 阿兰·图灵在1937年首次提出了一个通用的计算设备的设想。他设想所有的计算都可能在一种特殊的机器上执行,这就是现在所说的图灵机。
  • 基于冯·诺依曼模型建造的计算机分为4个子系统:存储器、算术逻辑单元、控制单元和输入/输出单元。冯·诺依曼模型指出程序必须存储在存储器中。
  • 我们可以认为计算机由三大部分组成:计算机硬件、数据和计算机软件。
  • 计算和计算机的历史可分为三个阶段:机械计算机器阶段(1930年以前);电子计算机阶段(1930~1950年);以及包括5个现代计算机时代的阶段。
  • 计算机科学引发了一些周遭的问题。其中最为普遍的可以归类为社会问题和道德问题。
  • 随着计算机的发明,带来了新的学科:计算机科学。如同其他任何学科一样,计算机科学现在被划分成几个领域。

复习

1.定义一个基于图灵模型的计算机。

2.定义一个基于冯·诺依曼模型的计算机。

3.在基于图灵模型的计算机中,程序的作用是什么?于冯·诺依曼模型的计算机中,程序的作用是什么?

5.计算机中有哪些子系统?

6.计算机中存储器子系统的功能是什么?

7.计算机中ALU子系统的功能是什么?

8.计算机中控制单元子系统的功能是什么?

9.计算机中输入/输出子系统的功能是什么?

10.简述5个时代的计算机。

练习

1.解释为什么计算机不能解决那些计算机外部世界无解决方法的问题。

2.如果一台小的便宜的计算机可以做大型昂贵的计算机同样能做的事情,为什么人们需要大的呢?

3.研究Pascaline计算器,看看它是否符合图灵模型。

4.研究莱布尼茨之轮(Leibnitz'sWheel),看看它是否符合图灵模型。

5.研究雅卡尔提花织机(Jacquard loom),看看它是否符合图灵模型。

6.研究查尔斯·巴比奇分析引擎,看看它是否符合冯·诺依曼模型。

7.研究ABC计算机,看看它是否符合冯·诺依曼模型。

8.研究并找出键盘起源于哪一代计算机。

二、数字系统

总结

  • 数字系统(或数码系统)是用独特的符号来表示一个数字的系统。位置化数字系统中,在数字中符号所占据的位置决定了其表示的值。每个位置有一个位置量与其相关联。非位置化数字系统使用有限的数字符号,每个符号有一个值。但是符号所占用的位置通常与其值无关,每个符号的值是固定的。
  • 在十进制系统中,底b=10并且我们用10个符号来表示一个数。该系统中的符号常被称为十进制数码或仅称为数码。在二进制系统中,底b=2并且我们用2个符号来表示一个数。该系统中的符号常被称为二进制数码或位。在十六进制系统中,底b=16并且我们用16个符号来表示一个数。该系统中的符号常被称为十六进制数码。在八进制系统中,底b=8并且我们用8个符号来表示一个数。该系统中的符号常被称为八进制数码。
  • 我们可以从任意进制转换到十进制。我们将数码乘以其在源系统中的位置量并求和便得到在十进制中的数。我们能够将十进制数转换到与其等值的任意进制数。需要两个过程,一个用于整数部分,另一个用于小数部分。整数部分需要连除,而小数部分需要连乘。
  • 将数字从二进制转换到十六进制很容易,反之亦然。这是因为二进制中的4位恰好是十六进制中的1位。
  • 将数字从二进制转换到八进制很容易,反之亦然。这是因为二进制中的3位恰好是八进制中的1位。

复习

1.定义一个数字系统。

2.辨析位置化和非位置化数字系统。

3.定义位置化数字系统中的底或基数。位置化数字系统中,底与符号的数量有什么关系?

4.简述十进制系统。为什么称作十进制?该系统的底是多少?

5.简述二进制系统。为什么称作二进制?该系统的底是多少?

6.简述八进制系统。为什么称作八进制?该系统的底是多少?

7.简述十六进制系统。为什么称作十六进制?该系统的底是多少?

8.为什么二进制和十六进制互换很容易?

9.十六进制系统中1个数码表示二进制系统中的几位?

10.八进制系统中1个数码表示二进制系统中的几位?

练习

1.将下列二进制数转换为十进制数,不用计算器并写出计算过程:

a.(01101)2

b.(1011000)2

c.(011110.01)2

d.(111111.111)2

2.将下列十六进制数转换为十进制数,不用计算器并写出计算过程:

a.(AB2)16

b.(123)16

c.(ABB)16

d.(35E.E1)16

3.将下列八进制数转换为十进制数,不用计算器并写出计算过程:

a.(237)s

b.(2731)s

c.(617.7)8

d. (21.11)s

4.将下列十进制数转换为二进制数,不用计算器并写出计算过程:

a.1234

b.88

c.124.02

d.14.56

5.将下列十进制数转换为八进制数,不用计算器并写出计算过程:

a.1156

b.99

c. 11.4

d. 72.8

6.将下列士进制数转换为十六进制数,不用计算器并写出计算过程:

a.567

b.1411

c.12.13

d. 16.5

7.将下列八进制数转换为十六进制数,不用计算器并写出计算过程:

a.(514)s

b.(411)s

c.(13.7)s

d.(1256)s

8.将下列十六进制数转换为八进制数,不用计算器并写出计算过程:

a.(51A)16

b.(4E1)16

c.(BB.C)16

d.(ABC.D)6

9.将下列二进制数转换为八进制数,不用计算器并写出计算过程:

a.(01101)2

b.(1011000)2

c.(011110.01)2

d.(111111.111)2

10.将下列二进制数转换为十六进制数,不用计算器并写出计算过程:

a.(01101)2

b.(1011000)2

c.(011110.01)2

d.(111111.111)2

11.将下列十进制数转换为二进制数,使用例2.17中讨论的另一种方法,并写出计算过程:

a.121

b.78

C.255

d.214

12.将下列十进制数转换为二进制数,使用例2.18中讨论的另一种方法,并写出计算过程;

a.3%

b.12/%2

c.4''/a

d.12/2m

13.在底为b的位置化数字系统中,可用k个数码表示的最大整数数字是b-1。分别找出以下系统中使

用6个数码的最大数字:

a.二进制

b.十进制

c.十六进制

d.八进制

14.不进行转换,找出下面各个情况中在目标系统中所需的最少数码数量:

a.5个十进制数码转换为二进制

b.4个十进制数码转换为八进制

c.7 个十进制数码转换为十六进制

15.不进行转换,找出下面各个情况中在目标系统中所需的最少数码数量:

a.5位二进制数码转换为十进制

b.3个八进制数码转换为十进制

c.3个十六进制数码转换为十进制

16.下表显示如何重写小数,使其分母是2的幂次(1,2,4,8,16等等)。

原来的写法新的写法
0.51/2
0.251/2
0.1251/8
0.06251/16
0.03 1251/32
0.015 6251/64

但是,我们有时需要组合它们以得到合适的小数。例如,0.625是0.5+0.125。这就意味 0.625可以写成'/2+/8或/8。将下列十进制小数改写为带2的幂次的小数:

a. 0.1 875

b. 0.640 625

c.0.40 625

d.0.375

17.使用前面的解题方法,把下列数转换为二进制数;

a. 7.1 875

b. 12.640 625

c. 11.40 625

d.0.375

18.找出下列情形的整数最大值:

a. b=10,k=10

b.b=2,k=12

c.b=8,k=8

d.b=16, k=7

19.找出用于存储下列整数所需的最小位数:

a.小于1000

b.小于100 000

c.小于64

d. 小于256

20.一个小于bl的数可以用以b为底的k个数码表示。求下列情况各需要数码的数量;

a.小于2”的二进制整数

b.小于10°的十进制整数

c.小于8 的八进制整数

d.小于16°的十六进制整数

21.一个用于因特网的公共底是b=256。我们使用256个符号来表示该系统中的数字。设计者使用十进制数字0到255来表示其中一个符号,而不是创建大量的新符号。也就是说,符号集是S=(0,1,2,3,···,255}。该系统中的数字总是以St.S2.S.S4这种4个符号间隔3个点的形式出现。该系统用于定义因特网的网址(参见第6章)。例如,该系统中的一个地址是10.200.14.72,等价于十进制中的10×256'+200×256+14×256'+72×256°=180883016。这个数字系统称为点十进制计数法。写出下列因特网地址的十进制数值:

a. 17.234.34.14

b. 14.56.234.56

c. 110.14.56.78

d.24.56.13.11

22.前面问题中因特网地址也可以表示为位模式。这种情况,用32位表示一个地址。在点十进制计

数法中的一个符号用8位。例如,地址10.200.14.72,也可表示为00001010 11001000 00001110

01001000。用位表示下列因特网地址:

a.17.234.34.14

b. 14.56.234.56

c. 110.14.56.78

d.24.56.13.11

23.写出等值下列罗马数字的十进制数:

a.XV

b.XXVII

c. VLII

d. MCLVII

24.把下列十进制数转换成罗马数字:

a.17

b.38

c.82

d.999

25.找出下列有错的罗马数字:

a.MMIM

b.MIC

c.CVC

d.VX

26.玛雅文明发明了位置化的二十进制(以20为底)数字系统,称为玛雅数字系统。他们用20为底可

能是因为他们使用手指和脚趾一起来计数。该系统使用的20个符号建立在3个更简单的符号之上。

该系统的先进特征在于它有符号0,是一个外壳。另外2个符号是一个圈(或一个鹅卵石)表示1.

以及一个横杆(或一个棍子)表示5。为表示大于19的数字,数字竖写。在因特网搜索以下问题的

答案:十进制数12、123、452和1256在玛雅数字系统中是什么?

27.巴比伦文明发展了首个位置化数字系统,称为巴比伦数字系统。他们继承了闪族人和阿卡得人的数

字系统。将其发展为位置化的六十进制(以60为底)数字系统。该底现今还用于时间和角度。例

如,1小时为60分钟;1分钟为60秒。同样,1度为60分;1分为60秒。作为底为b的位置化

系统需要b个符号(数码),我们希望一个位置化的六十进制系统有60种符号。但是巴比伦人没有

符号0,而且通过堆叠表示1和10的2个符号构造出其他59个符号。在因特网搜索以下问题的

答案:

a.用巴比伦数字表示十进制数:11291,3646,3582。

b.指出没有符号0可能出现的问题。巴比伦数字系统是如何解决这个问题的?

三、数据存储

总结

  • 数据以不同的形式出现,包括数字、文本、音频、图像和视频。所有的数据类型都转换为称为位模式的统一表现形式。
  • 数字在存储到计算机内存中之前被转换成二进制系统。有数种方法来处理符号。有两种方法来处理小数点:定点和浮点。整数可以被当作小数点位置固定的数字:小数点固定在最右边一位。无符号整数是永远不会为负的整数。存储有符号整数的方法之一是符号加绝对值格式。这种格式中,最左位用于显示符号且其余位定义绝对值。符号和绝对值互相分开。几乎所有的计算机都使用二进制补码表示法来存储位于n位存储单元中的有符号整数。该方法中,无符号整数的有效范围被分为两个相等的子范围。第一个子范围用来表示非负整数,第二个子范围用于表示负整数。在二进制补码表示法中,最左位决定整数的符号。但符号和绝对值互相分开。实数是带有整数部分和小数部分的数字。实数使用浮点表示法存储在计算机中。一个数字在浮点表示法中由三部分组成:符号、位移量和定点数。
  • 文本的片断是用来表示该语言中某个意思的一系列的符号。我们可用位模式来表示每一个符号。不同的位模式(代码)集合被设计用于表示文本符号。硬件和软件制造商联合起来共同设计了一种名为Unicode的代码,这种代码使用32位表示一个符号。
  • 音频表示声音或音乐。音频是模拟数据。我们不能够在一段时间记录无限数量的值,我们只能记录一些样本。样本数量依赖于模拟信号中变化的最大数量。从每个样本测量来的值是真实的数字。量化指的是将样本的值截取为最接近的整数值的一种过程。
  • 存储在计算机中的图像使用两种不同的技术:光栅图或矢量图。当需要存储模拟图像(如照片)时,就用到了光栅图。图像被扫描(采样)然后存储像素。用矢量图图像的方法,一个图像被分解成几何图形的组合,例如,线段、矩形或圆形。每个几何形状由数学公式表达。
  • 视频是图像(称为帧)在时间上的表示。一部电影就是一系列的帧逐个播放而形成运动的图像。换言之,视频是随空间(单个图像)和时间(一系列图像)变化的信息表现。

复习

1.说出5种计算机可以处理的数据。

2.位模式的长度如何与其能表示的符号数量相关?

3.位图方法是如何以位模式来表示一个图像的?

4.矢量图方法优于位图方法的优点是什么?其缺点又是什么?

5.将音频数据转换为位模式需要哪些步骤?

6.比较和对照在无符号、符号加绝对值以及二进制补码格式中的正整数的表示法。

7.比较和对照在无符号、符号加绝对值以及二进制补码格式中的负整数的表示法。

8.比较和对照在符号加绝对值、二进制补码格式和余码格式中的0的表示法。

9.讨论在符号加绝对值和二进制补码格式中最左位扮演的角色。

10.回答以下关于实数浮点表示法的问题:

a.为什么需要规范化?

b.什么是尾数?

c.数字在规范化以后,何种信息被计算机存储在内存中?

练习

1.我们可以有多少不同的5位模式?

2.一些国家的车牌有两个十进制数码(0~9),我们可以有多少种不同的车牌?如果不允许使用数码

0,又会有多少种不同的车牌?

3.用2个数码跟3个大写字母(A~Z)的车牌来重做上题。

4.一种机器有8个不同的圈。为表示每个圈需要多少位?

5.学生在一门课程中的成绩可用A、B、C、D、F、W(退学)或1(未完成)表示等级。表示这些等级

需要多少位?

6.一个公司决定给每个员工分配唯一的位模式。如果该公司有900名雇员,构建该表示法的系统最少

需要多少位?可分配多少位模式?如果再雇佣另外300名员工,系统需要增加位数吗?说明答案。

7.如果我们使用4位模式表示0~9的数码,将浪费多少位模式?

8.一个音频信号每秒钟采样8000次,每个样本有256级不同的表示。表示这个信号需要每秒多

少位?

9.将下列十进制数转换成8位无符号整数。

a. 23

b.121

c.34

d.342

10.将下列十进制数转换成16位无符号整数。

a.41.

b.411

c.1234

d.342

11.将下列十进制数转换成8位二进制补码表示法。

a. -12

b.-145

c. 56

d.142

12.将下列十进制数转换成16位二进制补码表示法。

a.102

b.-179

c.534

d.62 056

13.将下列8位无符号整数转换成十进制数。

a.01101011

b.10010100

c.00000110

d.01010000

14.将下列8位二进制补码表示的整数转换成十进制数。

a.01110111

b.11111100

c.01110100

d.11001110

15.下面是一些二进制补码表示的二进制数。请问如何改变它们的正负。

a.01110111

b.11111100

c.01110111

d.11001110

16.如果在一个数上应用二进制补码表示法转换两次,将会得到原数。在下面的数上试试看。

a.01110111

b.11111100

c.01110100

d.11001110

17.将下面的二进制浮点数规范化。在规范化后详细指明指数的值是多少。

a. 1.10001

c.2-2×101.110011

b.2'×111.1111

18.将下面的数转换成32位IEEE格式。

d.2-5×101101.00000110011000

a.-2×1.10001

b.+2×1.111111

19.将下面的数转换成64位IEEE格式。

c.+2*×1.01110011

d.-2-×1.01101000

a.-2×1.10001

b.+2×1.111111

20.将下面的数转换成32位的IEEE形式。

c.+2×1.01110011

d.-2-×1.01101000

a. 7.187 5

b. -12.640 625

c. 11.406 25

d.-0.375

21.将下列8位符号加绝对值表示的整数转换成十进制数。

a.01110111

b.11111100

c.01110100

d.11001110

22.将下列十进制数转换成8位符号加绝对值表示法。

a.53

b.-107

c.-5

d.154

23.在计算机中表示有符号数字的方法之一是二进制反码。在这种表示法中,表示正数时我们将其直接

存为二进制数字;表示负数时,对该数字进行二进制反码运算。将下列十进制数转换成8位二进制

反码表示法。

a.53

b.-107

c.-5

d. 154

24.将下列8位二进制反码表示的数转换成十进制数。

a.01110111

b.11111100

c.01110100

d.11001110

25.如果在一个数上应用二进制反码表示法转换两次,将会得到原数。在下面的数上试试看。

a.01110111

b.11111100

c.01110100

d.11001110

26.另一种求二进制补码的方法是首先转换成二进制反码表示法,然后把结果加1(二进制加法在第4

章讲解)。试用两种方法转换下面的数,分析比较结果。

a.01110111

b.11111100

c.01110100

d.11001110

  1. 在十进制数中,与二进制反码对等的称为十进制反码(1=2-1和9=10-1)。对于n位的单元,我们

用十进制反码表示数字的范围是 -[(10"/2)-1] 到 +[(10”/2)-1]。带有n个数码的十进制反码数字通

过下面方法获得:如果数字为正,十进制反码就是其自身;如果数字为负,我们将每个数码减9。

针对3个数码位的单元回答以下问题:

a.使用十进制反码可表示的数字范围是多少?

b.该系统中我们如何决定数字的符号?

c.在该系统中我们会有两个0吗?

d.如果c的答案是肯定的,表示+0和-0的是什么?

28.求出下列数的十进制反码,假设只有3个数码位(参见题)。

a.+234

b.+560

c. -125.

d.-111

29.在十进制数中,与二进制补码对等的称为十进制补码(在二进制系统中,2是底;在十进制系统中,

10是底)。对于n位的单元,我们用十进制补码表示数字的范围是:

-(10”/2)到+(10*/2-1)

带有n个数码的十进制补码数字通过下面方法获得;先求出该数字的十进制反码,接着给结果

加1。针对3个数码位的单元回答以下问题:

a.使用十进制补码可表示的数字范围是多少?

b.该系统中我们如何决定数字的符号?

c.在该系统中我们会有两个0吗?

d.如果c的答案是肯定的,表示+0和-0的是什么?

30.求出下列数的十进制补码,假设只有3个数码位。

a.+234

b.+560

c.-125

d.-111

31.在十六进制数中,与二进制反码对等的称为十六进制反码(1=2-1和15=16-1)。

a.3个数码位使用十六进制反码可表示的数字范围是多少?

b.说明在十六进制系统中如何获得十六进制反码?

c.在该系统中我们会有两个0吗?

d.如果c的答案是肯定的,表示+0和-0的是什么?

32.求出下列数的十六进制反码,假设只有3个数码位。

a.+B14

b.+FE1

c.-1A

d.-1E2

33.在十六进制数中,与二进制补码对等的称为十六进制补码。

a.3个数码位使用十六进制补码可表示的数字范围是多少?

b.说明在十六进制系统中如何获得十六进制补码?

c.在该系统中我们会有两个0吗?

d.如果c的答案是肯定的,表示+0和-0的是什么?

34.求出下列数的十六进制补码,假设只有3个数码位。

C.-1A

d.-1E2

a.+B14

b.+FE1

四、数据运算

总结

复习

练习

五、计算机组成

总结

复习

练习

六、计算机网络

总结

复习

练习

七、操作系统

总结

复习

练习

八、算法

总结

复习

练习

九、程序设计语言

总结

复习

练习

十、软件工程

总结

复习

练习

十一、数据结构

总结

复习

练习

十二、抽象数据类型

总结

复习

练习

十三、文件结构

总结

复习

练习

十四、数据库

总结

复习

练习

十五、数据压缩

总结

复习

练习

十六、安全

总结

复习

练习

十七、计算机理论

总结

复习

练习

十八、人工智能

总结

复习

练习