《计算机科学概论》—第2章2.2节位置记数法

2.2 位置记数法
943这个数中有多少实体?也就是说,943这个数表示多少件实物?用初中术语来说,943是9个100加4个10加3个1,或者说,是900个1加40个1加3个1。那么,754中又有多少实体?700个1加50个1加4个1。对吗?也许正确,答案是由你使用的记数系统的基数决定的。如果这些数字是以10为基数的,或者说是十进制数,也就是人们日常使用的数制,那么上述答案是正确的。但在其他记数系统中,上述答案就错了。
记数系统的基数规定了这个系统中使用的数字量。这些数字都是从0开始,到比基数小1的数字结束。例如,在以2为基数的系统中,有两个数字0和1。在以8为基数的系统中,有8个数字,从0到7。在以10为基数的系统中,有10个数字,从0到9。基数还决定了数位位置的含义。当给记数系统中的最后一个数加1后,必须执行数位位置左移。
基数(base):记数系统的基本数值,规定了这个系统中使用的数字量和数位位置的值。
数字是用位置记数法编写的。最右边的数位表示它的值乘以基数的0次幂,紧挨着这个数位的左边的数位表示它的值乘以基数的1次幂,接下来的数位表示它的值乘以基数的2次幂,再接下来的数位表示它的值乘以基数的3次幂,依此类推。也许你不知道自己对位置记数法如此熟悉。我们用它来计算943中的1的个数。

位置记数法(positional notation):一种表达数字的系统,数位按顺序排列,每个数位有一个位值,数字的值是每个数位和位值的乘积之和。

位置记数法更正式的定义是用记数系统的基数的多项式表示值。但什么是多项式呢?多项式是两个或多个代数项的和,每个代数项由一个常量乘以一个或多个变量的非负整数幂构成。在定义位置记数法时,变量指的是记数系统的基数。943可以表示为下列多项式,其中x表示基数:
9 x2 + 4 x1 + 3 * x0
0的重要性
位置记数法之所以能存在,完全是因为0这个概念。我们通常认为,0是所有现代数学分支的交集中的基本概念。Georges Ifrah在他的著作《The Universal History of Computing》中说道:“总而言之,0的发现给了人类思想无限的潜力。没有其他的人类创新可以给人类智能的发展带来如此深远的影响”。

让我们来正式表述这一概念。如果一个数字采用的是以R为基数的记数系统,具有n个数位,那么可以用下列多项式表示它,其中,di表示数字中第i位的数值:
dn Rn-1 + dn-1 Rn-2 + … + d2 * R + d1
是不是看起来很复杂?我们看一个实例:以10为基数的数字63578。n等于5(该数字有5个数位),R等于10(基数)。根据公式,第5个数位(最左边的数位)乘以基数的4次方,第4个数位乘以基数的3次方,第3个数位乘以基数的2次方,第2个数位乘以基数的1次方,第一个数位什么都不乘。
6 104 + 3 103 + 5 102 + 7 101 + 8
在前面的计算中,我们都假设基数是10。这是一种逻辑假设,因为我们的记数系统是以10为基数的。但是,这并非意味着943表示的不会是一个以13为基数的值。如果是这样,要确定1的个数,必须先把943转换成以10为基数的数字。

因此,以13为基数的数943等于以10为基数的数1576。记住,这两个数是等值的。也就是说,它们表示的是同等数量的实体。如果一个包中有(以13为基数)943个豆子,另一个包中有(以10为基数)1576个豆子,那么两个包中的豆子数是完全一样的。记数系统使我们能用多种方式表示数值。
注意,以10为基数,最右边的数字是“1”数位;以13为基数,最右边的数字也是“1”数位。事实上,以任何数字为基数,最右边的数字都是“1”数位,因为任何数字的0次幂都是1。
为什么有人要把数值表示为以13为基数呢?虽然以13为基数的数并不常见,但是有时它对理解记数系统的运作还是很有帮助的。例如,有一种计算技术称为散列法,就是将数字打乱,方法之一就是用另一种基数表示这个数字。
其他基数(如2)在计算机处理中更加重要。我们来详细探讨一下这些基数。
算盘
在第1章的计算简史中,我们提到了算盘这种早期的计算设备。更确切地说,算盘是使用位置记数法表示十进制数的设备。每一列中的算珠表示那一列的数字,所有列组合在一起表示一个完整的数字。

中部横木以上的算珠表示5个单位,以下的算珠表示1个单位。没有挨着中部横木的算珠与得到的数字无关。下面的图显示了用算盘表示的数字27?091。

用户通过以特定的方式移动算珠来执行计算,反映了基本的算术运算,即加法、减法、乘法和除法。
尽管很古老,但是现在在许多亚洲文化中还是能见到算盘。在商店里,收银员使用的可能是算盘,而不是电子收银机。虽然没有电子设备的优点,但算盘能更有效地满足基本商务需要的计算。算盘能手能在速度和正确度上与使用计算器的用户一比高下。
亚洲国家的孩子会学习算盘的机械化操作,和你反复背诵乘法表非常相似。要对一个数字执行运算,用户只需要用一只手的拇指、食指和中指执行一系列算珠移动即可。这些移动对应于单独的数位,由执行的运算决定。例如,算盘上已有数字5,要把7加到5上,用户需要清除表示5的算珠(把它移到算盘顶部),把这一列中下面的两个算珠向上推到横木处,在这一列左边的列中推上一个算珠。虽然这些移动操作与我们在纸上所做的基本加法运算一样,但是算盘的用户并没有考虑数学,他们习惯于在特定的数字遇到特定的运算时,执行特定的移动操作。当计算完成后,用户将读取算盘上显示的结果。
双五进制表示法
IBM 650控制台是20世纪50年代末期流行的商用计算机,它允许运算符读取使用双五进制系统的内存内容。这种数字表示系统使用7个灯表示10个十进制数。

每个数字由两个灯表示,一个灯属于上部的两个灯,另一个灯属于下部的5个灯。如果左上部的灯亮了,其他5个灯从上到下分别表示0、1、2、3和4。如果右上部的灯亮了,其他5个灯从上到下分别表示5、6、7、8和9。下图表示的是数字7:
IBM 650被称为计算机的Ford Tri-Motor,因为像Ford Tri-Motor一样,IBM 650被运载到拉丁美洲,在那里延长了它的寿命。

2.2.1 二进制、八进制和十六进制
以2为基数(二进制)的记数系统在计算中尤其重要。了解以2的幂为基数的记数系统(如以8为基数的八进制和以16为基数的十六进制)也很有用。记住,基数规定了记数系统中数字的个数。以10为基数的记数系统具有10个数字(0-9),以2为基数的记数系统具有2个数字(0-1),以8为基数的记数系统具有8个数字(0-7)。因此,数字943不可能表示一个基数小于10的值,因为在这样的记数系统中,根本不存在数字9。它是一个以10或大于10的数为基数的有效数字。同样,2074是一个以8或大于8的数为基数的有效数字,不存在于以小于8的数字为基数的记数系统中(因为它使用了7)。
那么在基数大于10的记数系统中有哪些数字呢?我们用符号表示相当于十进制中大于等于10的值的数字。在以比10大的数为基数的记数系统中,我们把字母用作数字。字母A表示数字10,字母B表示11,C表示12,依此类推。因此,以16为基数的记数系统中的16个数字如下所示:
0、1、2、3、4、5、6、7、8、9、A、B、C、D、E和F
让我们看一些八进制、十六进制和二进制的数,看看它们表示的十进制数是什么。例如,计算与八进制数(以8为基数)754等值的十进制数。如前所示,我们把这个数字展开成多项式的形式,然后求和。

把十六进制数ABC转换成十进制数:

注意,把数字转换成十进制数所执行的操作完全一样,只不过这次使用的基数是16,我们必须记住字母数字表示的数值。多加练习,你就不会觉得把字母用作数字很奇怪了。
最后,我们来把二进制(以2为基数的)数1010110转换成十进制数,执行的步骤仍然相同,只是基数改变了:

还记得吗?任何记数系统中的最大数字比基数小1。要用任何基数表示基数值,只需要两个数字。0位于最右边,1在0的左边,这个数字表示基数值本身。因此,10是以10为基数的记数系统中的10,10是以8为基数的记数系统中的8,10是以16为基数的记数系统中的16。仔细考虑一下。记数系统的一致性是非常好的。
采用其他基数的数字的加法和减法运算与十进制数中的运算完全一样。
2.2.2 其他记数系统中的运算
回忆一下十进制数运算的基本思想:0 + 1等于1,1 + 1等于2,2 + 1等于3,依此类推。当要相加的两个数的和大于基数时,情况就变得比较有趣了。例如,1 + 9。因为没有表示10的符号,所以只能重复使用已有的数字,并且利用它们的位置。最右边的值将回0,它左边的位置上发生进位。因此,在以10为基数的记数系统中,1 + 9等于10。
二进制运算的规则与十进制运算的类似,不过可用的数字更少。0 + 1等于1,1 + 1等于0加一个进位。同样的规则适用于较大数中的每一个数位,这一操作将持续到没有需要相加的数字为止。下面的例子将求二进制数101110和11011的和。每个数位之上的值标识了进位。

可以通过把两个运算数都转换成十进制数并用它们的和与上面的值比较来确认这个答案是否正确。101110等于十进制的46,11011等于27,它们的和是73。1001001等于十进制的73。
在小学学过的减法法则是9-1等于8,8-1等于7,依此类推,直到要用一个较小的数减一个较大的数,例如0-1。要实现这样的减法,必须从减数数字中的下一个左边数位上“借1”。更确切地说,借的是基数的一次幂。因此,在十进制中,借位时借到的是10。同样的逻辑适用于二进制减法。在二进制减法中,每次借位借到的是2。下面的两个例子中标识出了借位。
   
同样,可以通过把所有值转换成十进制的值并进行减法运算后与上面的结果进行比较,看答案是不是正确的。
2.2.3 以2的幂为基数的记数系统
二进制数和八进制数有种非常特殊的关系:给定一个二进制数,可以很快读出它对应的八进制数;给定一个八进制数,也可以很快读出它对应的二进制数。以八进制数754为例,如果把每个数位都替换成这个数位的二进制表示,就可以得到754对应的二进制数。也就是说,八进制中的7等于二进制的111,八进制的5等于二进制的101,八进制的4等于二进制的100,所以八进制的754等于二进制的111101100。
为了便于转换,下表列出了从0到10的十进制数和它们对应的二进制数及八进制数。
二进制 八进制 十进制 二进制 八进制 十进制
0 0 0 110 6 6
1 1 1 111 7 7
10 2 2 1000 10 8
11 3 3 1001 11 9
100 4 4 1010 12 10
101 5 5

把二进制数转换成八进制数,要从最右边的二进制数位开始,每三个数位一组,把每组数字转换成相应的八进制数。
  
下面把二进制数1010110转换成八进制的,然后把这个八进制数转换成十进制的。答案应该是1010110对应的十进制数86。
  

可以数到三吗?
认知心理学家已经证明学龄前儿童所能识别的集合不超过三个,即一个对象的集合、两个对象的集合和三个或多于三个(又称为多个)对象的集合。人类学家和语言学家也确认了两个多世纪前,许多语言都只有两个或三个表示数字的单词,即“一个”“一对”和“许多”。英语中仍有一些反映三个或多个的单词,如“gang”“pile”“bunch”“f?lock”“herd”“school”“f?leet”“pride”“pack”和“gaggle”。
——Denise Schmandt-Besseerat, One, Two...Three, Odyssey, September/October 2002, p6和7

二进制数和八进制数之间可以快速转换的原因在于8是2的幂。在二进制和十六进制之间也存在类似的关系。让我们把二进制数1010110转换成十六进制数,方法是从右到左,把每四个数位分成一组。
 

现在,我们来把十六进制数ABC转换成二进制的。表示一位十六进制数需要四位二进制数。十六进制中的A等于十进制中的10,因此,等于二进制的1010。同样,十六进制的B等于二进制的1011,十六进制的C等于二进制的1100。因此,十六进制数ABC等于二进制数101010111100。
我们不直接把101010111100转换成十进制的2748,而是把它划分成八进制数位并转换成八进制数。
   
因此,八进制的5274等于十进制的2748。
在下一节中,我们将说明如何把十进制数转换成其他记数系统中的等值数字。
2.2.4 把十进制数转换成其他数制的数
转换十进制数的规则涉及新基数的除法。由这个除法可以得到一个商和一个余数。余数将成为新数字中的(从右到左)下一位数,商将代替要转换的数字。这一过程将持续到商为0为止。让我们用另一种形式来描述这些规则。
While(商不是0)
  用新基数除这个十进制数
  把余数作为答案左边的下一个数字
  用商代替这个十进制数

这些规则构成了把十进制数转换成其他数制的算法。算法是解决问题的步骤的逻辑序列,后面的章节中将有大量关于算法的介绍。这里我们只是介绍一种描述算法的方式,并说明如何用它来执行转换。
算法的第一行告诉我们,在除法的商成为0之前,要重复执行下面的三行操作。让我们来把十进制数2748转换成十六进制数。我们在前面的例子中看到了,答案应该是ABC。

余数(12)是十六进制数中的第一位数,由数字C表示。迄今为止,答案是C。由于商不是0,所以要用新基数除它(171)。

余数(11)是答案中左边的下一位数,由数字B表示。迄今为止,答案是BC。由于商不是0,所以要用新基数除它(10)。

余数(10)是答案中左边的下一位数,由数字A表示。现在,答案是ABC。由于商是0,所以整个过程结束了,最后的答案是ABC。
2.2.5 二进制数值与计算机
虽然有些早期计算机是十进制机器,但是现代计算机都是二进制机器。也就是说,计算机中的数字都是用二进制形式表示的。事实上,所有信息都是用二进制数值表示的,原因在于计算机中的每个存储位只有高电平和低电平两种信号。由于每个存储位的状态只能是这两者之一,所以用0和1表示这两种状态很符合逻辑。低电平信号等同于0,高电平信号等同于1。事实上,你可以忘记电平,认为每个存储位存放的值是0或1。注意,存储位不能是空的,必须存放0或1。
每个存储单元称为一个二进制数字(或简称为位)。把位集合在一起就构成了字节(8位),字节集合在一起构成了字。字中的位数称为计算机的字长。例如,20世纪70年代晚期的IBM 370体系结构中有半字(2字节或16位)、全字(4字节)和双字(8字节)。

二进制数字(binary digit):二进制记数系统中的一位数字,可以是0或1。
位(bit):二进制数字的简称。
字节(byte):8个二进制位。
字(word):一个或多个字节,字中的位数称为计算机的字长。

现代计算机通常是32位的机器(如Intel公司的Pentium IV处理器)或64位的机器(如HP公司的Alpha处理器和Intel公司的Itanium 2处理器),但是有些应用设备(如寻呼机)使用的微处理器是8位的机器。无论你使用的是什么计算机器,它们最终采用的都是二进制记数系统。
关于计算机和二进制数之间的关系还有很多是值得探讨的。在下一章中,我们将分析各种类型的数据,看看它们在计算机中是如何表示的。在第4章中,我们将介绍如何控制表示二进制数值的电信号。第6章将介绍如何用二进制数表示计算机执行的程序命令。
Grace Murray Hopper
美国海军少将Grace Murray Hopper从1943年到1992年元旦去世,生活与计算密不可分。1991年,由于在计算机程序设计语言开发方面的杰出贡献,她被授予美国国家科技奖章。这一贡献简化了计算机技术,为广大用户打开了一扇大门。
海军少将Hopper于1906年12月9日出生在纽约市的Grace Brewster Murray家。她曾就读于Vassar大学,并从耶鲁大学获得了数学博士学位。之后的10年中,她在Vassar大学教授数学。
1943年,Hopper加入了美国海军,被分配到哈佛大学的军械计算项目处,担任Mark I的程序员。战争过后,她仍留在哈佛大学担任教员,并继续从事有关海军的Mark II和Mark III计算机的工作。在从事Mark II工作期间,她发现了第一个计算机“bug”,即在一个继电器中捉到一只蛾子。1949年,她加入了Eckert-Mauchly Computer公司,从事有关UNIVAC I的工作。
1952年,Hopper得到了一台能够运行的编译器,当时普遍认为计算机只能进行算术运算。虽然Hopper并不属于设计计算机语言COBOL的委员会,但她也积极参与了这种语言的设计、实现和使用。COBOL(面向商业的通用语言,Common Business-Oriented Language)是在20世纪60年代早期开发的,目前仍广泛应用于商业数据处理中。
1966年,Hopper从海军退休了,但同年即被招回,负责指导海军维护程序设计语言的一致性。就像海军将领Hyman Rickover被称为美国有核海军之父一样,海军少将Hopper是美国海军计算机化的数据自动化之母。直到1986年再次退休,她一直服务于海军数据自动化司令部,军衔为海军少将。在去世时,她是Digital Equipment公司的高级顾问。
在Hopper的一生中,曾收到过来自40多所学院和大学的荣誉学位。此外,她还获得过多种奖励,包括Data Processing Management Association授予的第一个计算机科学年度人物奖和Special Interest Group for Computer Science Education(隶属于ACM,Association for Computing Machinery)授予的计算机科学教育贡献奖。
Hopper喜爱年轻人,喜欢在学院和大学校园中进行讲座。她常常分发彩色的电线,她称之为“1毫微秒”,因为这些电线的长度是1英尺,即光速运行1毫微秒(十亿分之一秒)的距离。她对年轻人的教诲是:“你掌管着一切,领导着人们。我们要极度热衷于管理,而忘记自己的领导身份。”
当被问道在她的诸多成就中她最为自豪的是什么时,她答道:“我多年来培养出的所有年轻人。”

小结
数是用位置记数法编写的,其中数字按顺序排列,每个数字具有一个位值,数值等于每个数字与它的位值的乘积之和。位值是记数系统的基数的幂。因此,在十进制记数系统中,位值是10的幂;在二进制记数系统中,位值是2的幂。
任何用位置记数法表示的数都可以进行算术运算。十进制数的运算规则也适用于其他记数系统。给记数系统中的最大数字加1将引发进位。
二进制数、八进制数和十六进制数是相关的,因为它们的基数都是2的幂。这种关系为它们之间的数值转换提供了快捷方式。计算机硬件采用的是二进制数。低电平信号相当于0,高电平信号相当于1。

道德问题:the Tenth Strand的知识单元
每个知识单元定义了一个连贯的主题集合,这些主题都十分基础,因此应当包含在每一个本科课程中。ImpactCS项目提出的五个基础的知识单元是:
ES1:计算机专业人士的责任
ES2:道德分析的基本元素
ES3:道德分析的基本技巧
ES4:社会分析的基本元素
ES5:社会分析的基本技巧
由电气电子工程师协会和美国计算机协会联合推出的“计算课程2001”将这一领域的知识单元增加到七个核心主题和三个选修主题。下面列举了核心领域和每个领域下属的主要课题:
SP1.计算发展史
史前——1946年之前的世界
计算机硬件、软件、网络的历史
计算先驱

SP2.计算的社会环境
社会环境对计算的影响简介
网络传播的社会意义
互联网的增长、控制和访问
与性别相关的问题
国际化问题
SP3.分析的方法和工具
道德争论的制定与评价
道德选择的识别和评估
理解设计的社会环境
假设和价值的识别
SP4.职业和道德责任
社区价值和我们遵循的法律
职业精神的本质
职业证书的不同形式及其优缺点
职业在国家政策中的角色
保持对于后果的认识
道德异议和泄密
道德准则、行为和实践(IEEE、ACM、SE、AITP等)
处理骚扰和歧视
工作场所“允许使用”的计算政策
SP5.基于计算机的系统的风险和责任
软件风险的历史案例(如Therac-25案例)
软件复杂性的影响
风险评估和管理
SP6.知识产权
知识产权的基础
版权、专利和商业秘密
软件盗版
软件专利
涉及知识产权的跨国问题
SP7.隐私和公民自由
隐私保护的道德和法律基础
大型数据库系统的隐私影响
隐私保护的技术策略
网络空间的言论自由
跨国和跨文化的影响

练习
为练习1~5选择与它们匹配的定义。
A.?数字 B.?自然数 C.?整数
D.?负数 E.?有理数
1. 抽象数学系统的一个单位,服从算术法则。
2. 自然数、自然数的负数或0。
3. 0和通过在0上重复加1得到的任何数。
4. 整数或两个整数的商(不包括被0除的情况)。
5. 小于0的数,是在相应的正数前加上负号。
为练习6~11选择与问题匹配的答案。
A.?10001100 B.?10011110 C.?1101010
D.?1100000 E.?1010001 F.?1111000
6. 1110011 + 11001(二进制加法)
7. 1010101 + 10101(二进制加法)
8. 1111111 + 11111(二进制加法)
9. 1111111 - 111(二进制减法)
10. 1100111 - 111(二进制减法)
11. 1010110 - 101(二进制减法)
判断练习12~17中陈述的对错:
A.?对 B.?错
12. 二进制数在计算中很重要,因为二进制数可以被转换成以任何数为基数的数。
13. 可以迅速地读出一个二进制数对应的十六进制数,但是不能迅速地读出它对应的八进制数。
14. 从左到右,每四个二进制数字可以被转换成一个十六进制数字。
15. 一个字节由6个二进制数字构成。
16. 一个字节中不能存储两个十六进制数字。
17. 无论从左到右还是从右到左,把一个八进制数转换成二进制数得到的结果相同。
练习18~45是问题或简答题。
18. 请区分自然数和负数。
19. 请区分自然数和有理数。
20. 把下列数标识为自然数、负数或有理数。
a)1.333?333 b)-1/3
c)1066 d)2/5
e)6.2 f)p?(pi)
21. 采用下列基数时,891中有多少个1?
a)以10为基数 b)以8为基数
c)以12为基数 d)以13为基数
e)以16为基数
22. 用练习21中的各种基数把891表示为多项式的形式。
23. 把下列数转换成十进制数。
a)111(以2为基数)
b)777(以8为基数)
c)FEC(以16为基数)
d)777(以16为基数)
e)111(以8为基数)
24. 请解释基数2和基数8之间的关系。
25. 请解释基数8和基数16之间的关系。
26. 请扩展2.2.3节中的表,加入数11至16。
27. 请扩展练习26中的表,加上十六进制的数。
28. 请把下列二进制数转换成八进制的。
a)111110110 b)1000001
c)10000010 d)1100010
29. 请把下列二进制数转换成十六进制的。
a)10101001 b)11100111
c)01101110 d)01121111
30. 请把下列十六进制数转换成八进制的。
a)A9 b)E7
c)6E
31. 请把下列八进制数转换成十六进制的。
a)777 b)605
c)443 d)521
e)1
32. 请把下列十进制数转换成八进制的。
a)901 b)321
c)1492 d)1066
e)2001
33. 请把下列十进制数转换成二进制的。
a)45 b)69
c)1066 d)99
e)1
34. 请把下列十进制数转换成十六进制的。
a)1066 b)1939
c)1 d)998
e)43
35. 如果你要表示十八进制记数系统中的数,那么除了字母外,用什么符号表示十进制数16和17?
36. 用你在练习35中设计的符号把下列十进制数转换成十八进制的。
a)1066 b)99099
c)1
37. 执行下列八进制加法运算。
a)770 + 665 b)101 + 707
c)202 + 667
38. 执行下列十六进制加法运算。
a)19AB6 + 43 b)AE9 + F
c)1066 + ABCD
39. 执行下列八进制减法运算。
a)1066-776 b)1234-765
c)7766-5544
40. 执行下列十六进制减法运算。
a)ABC-111 b)9988-AB
c)A9F8-1492
41. 为什么二进制数在计算学中很重要?
42. 一个字节包含多少位?
43. 在64位机器中,有多少字节?
44. 为什么像寻呼机这样的微处理器的字长只有8位?
45. 为什么学习如何操作定长数字很重要?
46. 十三进制数字AB98中有多少个1?
47. 请描述双五进制的工作原理。
思考题
1. 练习20要求指出π所属的类别。π并不属于任何指定的分类,它和e是超越数。在字典或旧数学书中查找超越数,用你自己的话定义它。
2. 复数是另一类本章没有讨论的数。在字典或旧数学书中查找复数,用你自己的话定义它。
3. 许多每天发生的事都可以用二进制数位表示。例如,门是打开的还是关闭的,炉子是开着的还是关着的,狗是睡着了还是醒着的。那么关系可以被表示为二进制值吗?请举例回答。
4. 挑选the Tenth Strand知识单元的几个主题,说一说它们对你每天生活的影响。

时间: 2024-08-25 20:24:55

《计算机科学概论》—第2章2.2节位置记数法的相关文章

《新编计算机科学概论》一本章小结

本章小结 虚拟机的概念有助于我们正确理解计算机的实质和计算机运算的实现途径,从而更好地进行计算机语言的研究和应用,包括了从基础的硬件层到应用层的不同层次结构的虚拟机. 计算机能直接执行用机器语言所编的程序.机器语言是由二进制代码表示的计算机器指令和数据组合而成.指令是用来指定计算机实现某种控制或执行某个运算的操作命令代码.一台计算机全部指令的集合,称为指令系统.不同的计算机有不同的指令系统. 从高级语言转换到真正可执行的机器语言有两类方法:编译和解释.这两种方式都能够将高级语言编写的源程序转换成

《新编计算机科学概论》一本章习题

本章习题 一.复习题 1. 试述数制的概念. 2. 列举出你所知道的数字系统. 3. 谈谈二进制.八进制和十六进制等数字表示方法各有什么优点和缺点. 4. 为什么使用二进制计算的时候会出现溢出? 5. 反码和补码相对于原码有什么优点?计算机中的数是用原码表示还是用反码.补码表示? 6. 汉字编码有哪几种?各自的特点是什么? 7. 图像是如何压缩存储的?哪一种图像占用空间最小,为什么? 8. ASCII码是什么编码?为什么国际上推行Unicode码? 9. 列举出你所知道的汉字输入码. 10. 尝

《计算机科学概论(第12版)》—第0章0.1节算法的作用

绪0论 绪论 计算机科学概论(第12版) 在开篇的这一章,我们探讨计算机科学所涉及的领域,介绍其历史背景,然后为我们的深入学习奠定基础. 本章内容 0.1 算法的作用 0.2 计算机器的由来 0.3 学习大纲 0.4 计算机科学的首要主题 计算机科学这门学科,是要为计算机设计.计算机程序设计.信息处理.问题的算法解决方案和算法过程本身等主题建立科学的基础.计算机科学既是当今计算机应用的支柱,又是今后计算基础设施的基础. 本书将详细介绍计算机科学,探索广阔的主题,包括构成大学计算机科学课程的大部分

《计算机科学概论(第12版)》目录—导读

版权 计算机科学概论(第12版) • 著 [美] J. Glenn Brookshear Dennis Brylow 译 刘 艺 吴 英 毛倩倩 责任编辑 杨海玲 • 人民邮电出版社出版发行 北京市丰台区成寿寺路11号 邮编 100164 电子邮件 315@ptpress.com.cn 网址 http://www.ptpress.com.cn • 读者服务热线:(010)81055410 反盗版热线:(010)81055315 内容提要 计算机科学概论(第12版) 本书是计算机科学概论课程的经典

《Google软件测试之道》—第2章2.2节测试认证

本节书摘来自异步社区<Google软件测试之道>一书中的第2章2.2节测试认证,作者[美]James Whittaker , Jason Arbon , Jeff Carollo,更多章节 2.2 测试认证 Patrick Copeland在本书的序中强调了让开发人员参与测试的难度.招聘到技术能力强的测试人员只是刚刚开始的第一步,我们依然需要开发人员参与进来一起做测试.其中我们使用的一个 关键方法就是被称为"测试认证"(译注:Test Certified)的计划.现在回过头

《计算机科学概论》—第1章1.2节计算的历史

1.2 计算的历史 计算的历史十分悠久,计算系统为什么成为今天这个样子是可以解释的.这一节讲述的故事中的人物和事件为我们开创了现在的天地,为开启激动人心的未来奠定了基础.我们分别描述了计算硬件和软件的历史,因为它们对计算系统进化为我们所用的层次模型有着不同的影响. 我们介绍历史时采用的是叙述性方式,没有正式地定义任何概念.在接下来的几章中,我们将定义这些概念,并且详细地研究它们.1.2.1 计算硬件简史 辅助人们进行各种计算的设备自古就有,迄今为止,它们还在不断进化中.让我们来简单浏览一下计算硬

《计算机科学概论(第12版)》—第1章1.10节通信差错

*1.10 通信差错 当信息在一台计算机的各个部分之间来回传输,或在月球和地球之间来回传输,又或者只是被保存在存储器中时,最终检索到的位模式有可能和最原始的不一致.灰尘颗粒.磁记录面的油脂或者出了故障的电路,都可能使数据被错误地记录或读取.传输通道上的静电干扰可能会损坏部分数据.在某些技术条件下,普通的背景辐射(background radiation)可以改变存储在机器主存储器中的模式. 为了解决这样的问题,人们开发了许多编码技术来检测甚至校正错误.现在,由于这些技术被大规模地内置于计算机系统

《计算机科学概论(第12版)》—第1章1.8节数据与程序设计

*1.8 数据与程序设计 虽然人类发明了构成现代计算机的数据表示和基本操作,但很少有人特别擅长于直接在计算机的这个层面上工作.人们喜欢在更高的抽象层次上推理计算问题,他们依赖计算机来处理最底层的细节问题.程序设计语言(programming language)是人类创造的一个计算机系统,通过它,人们能够使用更高层次的抽象向计算机精确地表达算法. 在20世纪,对计算机进行程序设计被认为是少数训练有素的专家们才能涉足的领域:当然,仍然有许多计算问题需要有经验的计算机科学家和软件工程师的关注.不过,到

《计算机科学概论》—第1章1.3节计算工具与计算学科

1.3 计算工具与计算学科 在计算机软件历史简介一节中,我们指出了用户角色的不断改变.在第一代软件末期,用户被划分为两组,即开发使程序设计更简单的工具的系统程序员和使用这些工具的应用程序员.此后,应用程序员利用传统的语言工具开发出大量专用的应用程序,如统计包.文字处理程序.电子制表软件.智能浏览器.虚拟环境和医疗诊断应用程序,而这些应用程序又由没有计算机背景的从业人员使用. 因此,到底谁在把计算机用作工具?除了为其他人创建工具的程序员之外,所有人都在使用计算机这个工具.对于那些工具制作者来说,计