软考–双符号位判决法

  • Post author:
  • Post category:其他



一、判断方式



计算机运算溢出检测机制,采用双符号位,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 版权协议,转载请附上原文出处链接和本声明。