关于双符号数溢出的理解

本文探讨了浮点数补码运算中正数加正数、负数加负数的情况,以及正负数混合运算时的溢出问题。在正数加正数时,由于超过了数值位的最大表示范围,导致正溢出;而在负数加负数的补码运算中,即使数值位产生进位,也不会发生溢出,因为负数补码的特性使得高位的1相当于原码的0。总结了浮点数运算中判断溢出的规律,并强调了正负数混合运算不会引发溢出的现象。
摘要由CSDN通过智能技术生成

利用双符号数进行浮点数补码加减运算的过程中,一般会碰到如下几种情况:

1. 正数加正数:

     如00,1111➕00,1000,此时的运算结果就为01,0111。

     很明显,这发生了正溢出,因为在数值位只有4位,能表示的最大数值为1111,而运算结果显然超出了该范围,于是产生了像符号位的进位,造成上溢出。

2. 负数加负数:

      如11,1111➕11,1000,此时的运算结果就为11,0111。

     显然,这没有发生了溢出,其原因是在负数补码中,高位的1相当于原码的0,于是如果两个操作数的数值位最高位都是1的话,是一定不会引起操作数溢出的,与正数两个最高位为0相加,不会发生溢出是一样的。如果,有其中一个为0的话,如果次高位传来进位,依旧可以保证对符号位的进位,也就是保证符号位不会发生变化,从而避免了溢出。

     所以在负数补码的运算当中,如果数值位最终产生了进位,则表明不会溢出,如果没有,则表明会溢出。

3. 正数和负数的运算不会引起溢出,此处不再赘述。

 

  • 0
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值