计算机算术运算.doc

  1. 1、本文档共168页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机的算术运算 数字的精度对科学非常重要。 D’arcy Wentworth Thompson On Growth and Form, 1917 4.1.简介 1 4.2 带符号数与无符号数 2 4.3 加法与减法 17 4.4 逻辑运算 26 4.5 构造算术逻辑单元 35 4.6乘法 50 4.7 除法 69 4.8.浮点运算 83 4.9.实际资料:PowerPC和80x86中的浮点部件 117 4.10.谬误和陷阱 122 4.11 结论 127 4.12.历史回顾和参考文献 134 4.13 重要术语 148 4.14 习题 149 计算机的五个典型部件 4.1.简介 计算机中的字(word)是由位(bits)组成的,因此,字可以表示为二进制的数字。大家都知道,自然数(0,1,2等等)既可以用十进制的形式表示,也可以用二进制的形式表示,但是,其它一些常见的数又如何表示呢?例如, 如何表示负数? 可以用计算机中的字表示的最大的数是多少? 如果某一操作所产生的结果比一个字所能表示的最大的数还大,那会出现什么情况呢? 小数和实数如何表示? 奔腾芯片曾经出过一个臭名昭著的浮点运算错误,你可能会问,这到底是怎么一回事呢?在所有这些问题的背后,都有一个很基本的原理需要弄清楚:硬件究竟是如何进行加法、减法、乘法以及除法运算的? 本章的目的就是要揭示这些基本原理;这其中包括如何表示各种数据,用什么算法来实现算术运算,硬件是如何实现这些算法的,以及在指令集中如何表示所有这些有关的内容,等等。有了这些知识之后,你就能解释在使用计算机的过程中遇到的各种不明白的事情了。(如果你对如何表示带符号的二进制数很熟悉的话,就可以跳过下一节,直接转到220页的4.3节)。 4.2 带符号数与无符号数 我们可以通过各种基数(base)来表示一个整数。正象我们在第三章中所介绍的那样,人们通常习惯于以10为基数,而在计算机中则更适合于以2为基数。由于我们常常既要用到十进制数,又要用到二进制数,因此,为了避免混淆,我们用下标10来表示十进制数,而用下标2表示二进制数。 对于任何一种进制(设基数为base)而言,其中的第i个数字d所代表的值为: d ( Base i 其中,i由右至左从0开始依次递增。自然而然地,由此也得到一种对字(word)中的各个位进行编号的方法:直接将与该位对应的基数的幂次作为其编号即可。例如: 10112 代表了: (1 ( 23) + (0 ( 22) + (1 ( 21) + (1 ( 20)10 = (1 ( 8) + (0 ( 4) + (1 ( 2) + (1 ( 1)10 = 1110 在这个字中,各位按从右到左的顺序依次编号为0, 1, 2, 3, …。下图给出的是MIPS机器一个字中各个数位的编号方法,并标出了数10112的放置位置: 一个字的各位既可以按由低位到高位的顺序从左至右排列,也可以从右至左排列。因此,“最左位”(leftmost)和“最右位”(rightmost)这两个词是有歧义的。为了避免这个问题,我们用最低有效位(Least significant bit; LSB)来表示上例中最右侧的第0位,而用最高有效位(Most significant bit; MSB)来表示最左侧的第31位。 MIPS机器的字长为32位,因此,一个字可以用来表示232种32位长的不同模式。很自然地,我们可以用这些组合来分别表示数字0到232-1(一共4,294,967,29510个): = = = ... = = = 软硬件接口 将2作为基数,这并不符合人们的习惯。由于人有10个手指头,我们自然而然地就习惯了以10为基数的计数法。那么,计算机为什么不采用十进制呢?实际上,最早的商用计算机确实提供了一些十进制操作。但问题是,由于(10(8)/32=2.5倍。除了需要更多的存储空间以外,对于用这种方法表示的数字,硬件在做加法、减法、乘法以及除法等各种运算时,所执行的操作也要比二进制表示法复杂得多。正是基于这些原因,计算机专家们才一致认为,在计算机中使用二进制表示法是再自然不过的了,即使只是偶尔使用十进制表示法,也会让他们感到奇怪的。 要注意的是,二进制位的各种组合方式不过是用来代表某个数字而已。其实,每一个整数实际上都有无数位;在这无数位中,除了最右边的若干位以外,其余的都是0。只不过我们通常不写出数字左边的这些0而已。 我们在4.5节到4.7节中将提到,可以用硬件的方式直接对以二进制方法表示的数进行加法、减法、乘法以及除法等运算。如果这些运算的正常结果无法用硬件所能提供的有效位数表示出来,就称这种现象为“溢出”(o

文档评论(0)

kehan123 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档