一、判断方式
计算机运算溢出检测机制,采用双符号位,00表示正号,11表示负号。如果进位将会导致符号位不一致,从而检测出溢出。结果的符号位为01时,称为上溢;为10时,称为下溢。
二、典型案例
例如设X = + 1000001,Y = + 1000011,采用双符号位表示X=00 1000001,Y=00 1000011,[X + Y]补=01 0000100,实际上,运算结果产生了正溢出。
设x=0.1101,y=-0.0111,符号位为双符号位 ,用补码求x+y,x-y
[x]补+[y]补=00 1101+11 1001=00 0110
[x-y]补=[x]补+[-y]补=00 1101+00 0111=01 0100 结果错误,正溢出
在确定了运算的字长和数据的表示方法后,数据的范围也就确定了。一旦运算结果超出所能表示的数据范围,就会发生溢出。发生溢出时,运算结果肯定是错误的。当两个同符号的数相加(或者是相异符号数相减)时,运算结果有可能产生溢出。常用的溢出检测机制主要有进位判决法和双符号位判决法。双符号位判决法若采用两位表示符号,即00表示正号、11表示负号,则溢出时两个符号位就不一致了,从而可以判定发生了溢出。
三、小试牛刀
若计算机存储数据采用的是双符号位(00表示正号、11表示负号),两个符号相同的数相加时,如果运算结果的两个符号位经()运算得1,则可断定这两个数相加的结果产生了溢出。
A.逻辑与
B.逻辑或
C.逻辑同或
D.逻辑异或
正确答案 D
分析:若计算机存储数据采用的是双符号位(00表示正号、11表示负号),两个同符号的数相加或异符号的数相减,所得结果的符号位SF和进位标志CF进行逻辑异或运算得1,则可断定这两个数相加的结果产生了溢出。
版权声明:本文为baidu_41666198原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。