2个回答
2013-08-06
展开全部
首先符号相反是不会产生溢出的~~所以就是X0Y0或~X0~Y0X0Y0~S0:负+负仍为负,故S0若0(即为正)则溢出;~X0~Y0S0:正+正仍为正,故S0为1(即为负)则溢出;至于减法似乎不对比如1-(-1)就为00000001-11111111=00000010,结果是对的,没有溢出,所以减法应该是不对的;正确的方法还是应该判断最符号位进位和最高位进位,异或为1则溢出,为0不溢出,加减法都适用。
展开全部
用二进制补码,表示正负数,具有一定的表示范围。
当数据,超出了它所能表示的范围,就会溢出。
如果出现了溢出,这组代码,就不能正确表示数据。
八位二进制代码:0000 0000~1111 1111。
也就是十进制数:0~255。
它们如果是补码:0~127,就直接代表零和正数;
128~255,则以补码代表-128~-1。
八位补码的范围:-128~+127。
在 127 上,再加上+1,就超出了范围,必然溢出。
这两个正数相加之后,将会得出128,却是个负数。
在 -128 上,再加上-1,也超范围,也会溢出。
这两个负数相加之后,将会得出 127,这是个正数。
补码计算出现了溢出,最重要的特征是:符号不正确。
你只要判断符号正确与否,就可以了。
另外,
能够超出范围的算法,一定是:正+正、负+负。
捎带还有:正-负、负-正。
除了这四种算法之外的计算,都不可能溢出。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询