考研计组第二章定点数的加减运算以及溢出判断

目录

一.原码加减法的逻辑

1.1 原码的加法运算逻辑

1.2 原码的减法逻辑

减法转变为加法 

二. 补码的加减法逻辑 

2.1 补码的加法原理

例题一 

2.2 补码的减法运算原理

例题二: 

三. 用计算机实现溢出判断 

3.1 溢出原理

3.2 溢出判断 

方法一: (单符号位补码模2补码)

方法二: 

溢出表达式为:

方法三: 双符号位判断溢出(双符号位补码模4补码)

 溢出表达式为:


回顾一下😋

在之前学习当中我们知道了讨论加减运算一般不讨论反码,只所以这篇讨论原码补码😘

一.原码加减法的逻辑

1.1 原码的加法运算逻辑

  1. 正+正 = 绝对值相加,结果为正
  2. 负+负 = 绝对值相加,结果为负
  3. 正+负 = 绝对值大的 - 绝对值小的,最后的结果的正负与绝对值大的相同
  4. 负+正 = 绝对值大的 - 绝对值小的,最后的结果的正负与绝对值大的相同

1.2 原码的减法逻辑

由于原码的减法实现起来不是很方便,所以我们需要 转变思路,将其转变成,方便的加法操作

减法转变为加法 

将“减数”的符号位取反,转变为加法

正 - 负 = 正 + 正

正 - 正 = 正 + 负

负 - 负 = 负 + 正

负 - 正 = 负 + 正

从上面大家可以看出来,这个逻辑用电路实现起来太难了 😫😫😫😫😫,所以我们一般使用不补码来进行加减。

二. 补码的加减法逻辑 

在前面的文章我们提到过,补码的加减不需要考虑符号位,因为符号位也同样参与运算

 如题:设机器字长为8位(含一位符号位),A = 15,B=-24,求【A+B】补和【A-B】补

2.1 补码的加法原理

例题一 

直接相加,符号位也相加,逢二进一

原码->补码:正数补码一样;负数先将原码转变成反码,在把反码末尾加1 ,具体的操作可以参考

我之前的一篇文章,原反补码计算icon-default.png?t=N7T8https://mp.csdn.net/mp_blog/creation/editor/133816890

2.2 补码的减法运算原理

将 -【B】补 转换成 +【-B】补

求【-B】补可以先求B的原码,具体步骤可看计组考研第二章 定点数的移位计算-CSDN博客

  • 负数补转原码的步骤:补码->原码:将符号位位保持不变,然后将其他位按位取反+1 
  • 找到右边第一个1和之后的数与原码一样,1左边的数与反码一样,将1左边的全部取反可以得原码
  • 【-B】补= 【B】补全部位包括符号位全部取反

(1) 

例题二: 

 

 由这题可以看出两个正数相加却等于负数,两个负数相加却等于正数,说明补码相加会存在溢出的情况

三. 用计算机实现溢出判断 

3.1 溢出原理

 会出现上溢和下溢的情况

  • 正数 + 正数 会发生上溢
  • 负数 + 负数 会发生下溢
  • 正数+负数不会发生溢出 

3.2 溢出判断 

方法一: (单符号位补码模2补码)

采用一位符号位设A的符号位为A_{S}。B的符号位为B_{S},运算结果的符号位为S_{S},则溢出表达式为

注意 🐾这里的+号表示的是或运算即全0为假,一真即真。三个值是且运算

如 上题【A+C】补的溢出表达式为 V = 000+111 = 1表示这里存在溢出 

【B-C】 V = 111+000 = 1 表示溢出

方法二: 

采用一位符号位,根据数据位进位情况判断溢出符号位的进位C_{S}, 最高数值位的进位C_{1}

根据数值位进位判断溢出
符号位的进位C_{S}最高数值位的进位C_{1}
上溢01
下溢10

C_{S}与 C_{1}不会同时有溢出

溢出表达式为:

V = C_{S} \bigoplus C_{1} 

当 V = 0时表示没有溢出

当V = 1时表示有溢出

方法三: 双符号位判断溢出(双符号位补码模4补码)

用两个符号位,多出来的一个符号位并不占用存储空间只是运算时复制了一个,符号位也都参与运算,正为00,负为11。如果运算结果:

运算结果为01则是上溢

运算结果为10则是下溢

如【A+C】补 = 00,0001111 + 00,1111100 = 01,0001011 上溢

    【B-C】补 = 11,1101000 + 11,0000100 = 10,1101100 下溢 

 溢出表达式为:

两个符号位异或,V = 0 表示没有溢出,V = 1 表示有溢出

S_{s1}\bigoplus S_{s2}

 

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值