补码运算中,常用检查溢出的方法有哪三种?
3个回答
展开全部
溢出,是指数据的大小,超出了编码所能表示的范围。
不仅是补码运算,任何形式的计算,都可能产生溢出。
比如:1999 年、2000 年 ...,这是用四位十进制表示。
当到了 9999 年,再过一年,你如果还用四位表示,这就溢出了。
字长为 8 位二进制,补码的范围是-128 至+127。
那么,+125 + 4 = +129,这就溢出了。
判断溢出的方法:
一、自己人工运算一下,如结果(符号)不正确,即为溢出。
二、编程,令 CPU 计算,如 OF=1,即为溢出。
三、上网求助高人。
不仅是补码运算,任何形式的计算,都可能产生溢出。
比如:1999 年、2000 年 ...,这是用四位十进制表示。
当到了 9999 年,再过一年,你如果还用四位表示,这就溢出了。
字长为 8 位二进制,补码的范围是-128 至+127。
那么,+125 + 4 = +129,这就溢出了。
判断溢出的方法:
一、自己人工运算一下,如结果(符号)不正确,即为溢出。
二、编程,令 CPU 计算,如 OF=1,即为溢出。
三、上网求助高人。
展开全部
溢出判断方法一
用Xf和Yf表示被加数和加数补码的符号位,Zf为补码和的符号位.当出现Xf = Yf= 0两数同为正,而Zf为负,即Zf=1时,有上溢.当出现Xf =Yf = 1两数同为负,而Zf为正,即Zf= 0时,有下溢.
溢出判断方法二
当数值最高位有进位位C1=1,符号位没有进位C0=0时,或当数值最高位没有进位位C1=0,符号位有进位C0=1时,结果有溢出.
溢出判断方法三:
用变形补码进行双符号位运算.在变形补码中,正数符号以"00"表示,负数的符号以"11"表示.一般称左边的符号位为第一符号位,右边的符号位为第二符号位.若运算结果的符号位为"01",则表明有正溢出产生.若运算结果的符号"10",则表明有负溢出产生.
用Xf和Yf表示被加数和加数补码的符号位,Zf为补码和的符号位.当出现Xf = Yf= 0两数同为正,而Zf为负,即Zf=1时,有上溢.当出现Xf =Yf = 1两数同为负,而Zf为正,即Zf= 0时,有下溢.
溢出判断方法二
当数值最高位有进位位C1=1,符号位没有进位C0=0时,或当数值最高位没有进位位C1=0,符号位有进位C0=1时,结果有溢出.
溢出判断方法三:
用变形补码进行双符号位运算.在变形补码中,正数符号以"00"表示,负数的符号以"11"表示.一般称左边的符号位为第一符号位,右边的符号位为第二符号位.若运算结果的符号位为"01",则表明有正溢出产生.若运算结果的符号"10",则表明有负溢出产生.
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
只有“正+正、负+负”,或着“正-负、负-正”才有可能溢出。
一、首先进行简单判断。不是上述四种算法,就肯定不会溢出。
二、用十进制数值算一下,结果,如果超出了表达范围,就溢出了。
三、用二进制补码算一下,结果的符号,如果不正常,就是溢出了。
四、编程,令 CPU 计算,如果 OF = 1,就是溢出了。
五、上网求助,找贤(闲)人帮忙。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询