- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第3章节 运算方法和运算部件
第3章 运算方法和运算部件 内容提要 算术逻辑运算基础 算术逻辑运算单元(ALU) 定点数乘法运算 定点除法运算 浮点数运算 3-1 算术逻辑运算基础 内容提要 定点数的加减法运算 溢出及其判别方法 移位 十进制数的运算 逻辑运算 3-1-1 定点数的加减法运算 补码加法运算 补码减法运算 1.补码加法运算 两个参与相加的数无论是正数还是负数,在进行相加运算时,只要将两个数表示成对应的补码形式,再将这两个补码直接按二进制运算规则相加,所得的结果就是和的补码形式。即两个数补码的和等于两个数和的补码。可用如下关系式描述: [X]补+[Y]补=[X+Y]补 补码加法运算举例1 例1: X=0.1011 Y=-0.1010 求 [X]补+[Y]补 = ? ????解: [X]补 =0.1011 [Y]补 =1.0110 补码加法运算举例2 例2: X=-0.1010 Y=-0.0101 求 [X]补+[Y]补=?????解: [X]补=1.0110 [Y]补=1.1011 2.补码减法运算 两个异号数的相加是利用它们的补码将减法变成了加法来做,减法运算当然也可以转化成加法来完成。之所以使用这种方法而不用直接减法,是因为这样可以和常规的加法运算使用同一加法器电路,从而简化了计算机硬件电路的设计。根据上式可得: [X-Y]补=[X+(-Y)]补=[X]补+[- Y]补 =[X]补- [ Y]补 补码减法 运算公式为: [X]补–[Y]补=[X–Y]补 ???????通过 [Y]补 求得 [–Y]补 可以将减法运算转化为补码的加法运算。 已知 [Y]补求 [–Y]补 的法则是:对 [Y]补各位(包括符号位)取反,末位加1 ,就可以得到[–Y]补 例 [Y]补 =1.1011 则 [–Y]补 =0.0101 [Y]补 = 0.1011 则 [–Y]补 =1.0101 补码减法运算举例1 例1: X=0.1100 Y=0.0110 求 [X]补–[Y]补 = ? 解: [X]补 =0.1100 [Y]补 =0.0110 [–Y]补 =1.1010 [X]补–[Y]补 = [X]补+[-Y]补 补码减法运算举例2 ?例2: X=–0.1100 Y=–0.0110 求 [X]补–[Y]补 = ? 解: [X]补 =1.0100 [Y]补 =1.1010 [–Y]补 =0.0110,则 [X]补–[Y]补 = [X]补+ [–Y]补 = ? 补码加减法小结 由此得到: 补码加减法运算法则如下: ( 1 )参加运算操作的数都用补码表示。 ( 2 )数据的符号与数据一样参加运算。 ( 3 )求差时将负减数求补,用求和代替求差, 将减法运算转化为补码的加法运算。 ( 4 )运算结果为补码。如果符号位为 0 ,表明运算结果为正;如果符号位为 1 ,则表明结果为负。 ( 5 )符号位的进位为模值,应该去掉。 3-1-2 溢出及其判别方法 由于CPU的字长是一定的,在确定了运算字长和数据的表示方法后,所能表示的数的范围也就相应确定了。当运算结果超出了机器数所能表示的范围,就会产生溢出。 两个异号数相加或两个同号数相减其运算结果是不会产生溢出的,只有两个同号数相加或两个异号数相减才可能发生溢出。运算结果为正且大于所能表示的最大正数,称为“正溢”;运算结果为负且小于所能表示的最小负数,称为“负溢”。 下面我们可以通过以下几个例子来推导出发生溢出的条件。 设字长为8位,用补码表示,则表示数的范围为-128~+ 127,如果运算结果超出此范围则发生了溢出。 3-1-2 溢出及其判别方法 3-1-2 溢出及其判别方法 1.根据符号位判断 从上述例子(b)、(d)可以看出: 两个正数相加,结果却为负数,则表明发生了溢出; 两个负数相加,结果却为正数,则也表明发生了溢出。 分别用Xn、Yn、Sn表示两个操作数的符号和运算结果的符号,则发生溢出的条件为: 溢出=XnYnSn+XnYnSn 2.根据进位位判断 设数值位向符号位发生的进位为Cn-1,而符号位向更高位发生的进位为Cn,则发生溢出的条件为: 3.根据双符号位判断 由于用一位二进制数来表示符号只能表示出正负两种情况,当产生溢出时,会使符号位的含义产生混乱。因此可将符号位扩充为两位,这样既能表示出符号的正负,又能反映出是否发生溢出和所发生溢出的类型。双符号位的编码含义如下: 00 结果为正,没有溢出 01 结果溢出,为正溢出 10 结果溢出,为负溢出
原创力文档


文档评论(0)