两个同符号的数相加或异符号的数相减,所得结果的符号位sF和进位标志CF进行(4)运算为1时,表示运算的结果产生溢出。

admin2019-06-12  40

问题 两个同符号的数相加或异符号的数相减,所得结果的符号位sF和进位标志CF进行(4)运算为1时,表示运算的结果产生溢出。

选项 A、与
B、或
C、与非
D、异或

答案D

解析 解答这道题,首先需要清楚一个概念,即-什么是溢出。溢出是指运算结果超出机器数的表示范围。从这个概念可以了解到,两个异号数相加不会产生溢出,仅两个同号数相加时才有可能产生溢出。两个正数相加而绝对值超出允许的表示范围时称为正溢,两个负数相加而绝对值超出允许的表示范围时则称为负溢。一旦溢出,溢出的部分将丢失,留下来的结果将不正确。如果只有一个符号位,溢出将使结果的符号位产生错乱。因此,一般计算机中都设置了溢出判断逻辑,如果产生溢出,将停机并显示“溢出”标志。
    现在来看几个典型的例子,从中可以总结出判断溢出的方法。其实在平时的学习当中,大家也应该尽可能多地自己总结规律。
    在下面的例题中,二进制数首位为符号位,后面4位为数据位。采用补码运算。
    例1:
    3+6=9
    0 0011
    0 0110
    0 1001
    例2:
    8+9=17
    0 1000
    0 1001
    1 0001(正溢)
    例3:
    8+(-5)=3
    0 1000
    1 1011
    0 0011
    例4:
    (-9)+(-8)=-17
    1 0111
    1 1000
    0 1111(负溢)
    看完上面的4个运算式,可以开始总结规律了。由于上面的计算,是对两个4位的带符号二进制数进行运算,运算结果仍是一个4位带符号二进制数。所以其运算结果的范围应是-16~+15,非常明显,上面的例2和例4的结果溢出了。接下来,对这几个例题进行详细分析。为了便于分析,令两个操作数的符号位分别为Sa和Sb。结果的符号位为Sf。符号位直接参与运算,所产生的符号位进位为Cf。将符号位之后的A1和B1称为最高有效位,它产生的进位为C。在例3中,C=1,但并未溢出,所以进位不等于溢出,不能简单地根据单个进位信号去判断有无溢出,而应当从几个相关信号之间的关联去进行溢出判断。
    根据这些信号的关联,可以推出多种判断溢出的关系。
    溢出判断方法一:
    溢出=
    这个式子其实是由两部分组成的,分别说明了两种情况的溢出。
    第一种情况:表示当操作数符号位Sa和Sb都为0,且结果的符号位为1时,产生溢出。符号位Sa和Sb都为0表示两个操作数均为正数,所以这种情况被称为“正溢”。
    例2符合此情况。
    第二种情况:表示当操作数符号位Sa和Sb都为1,且结果的符号位为0时,产生溢出。符号位Sa和Sb都为1表示两个操作数均为负数,所以这种情况被称为“负溢”。
    例4符合此情况。
    溢出判断方法二:
溢出=Cf0⊕C
    这种方法是从两种进位信号之间的关联角度出发的,Cf为符号运算后产生的进位,C为最高有效数位产生的进位。分析前面的几个例题会发现:产生正溢时,由于操作数较大,因而C=1,但由于两个正数的符号位都为0,则Cf=0;产生负溢时,由于补码映射值较小,因而C=0,但由于两个负数的符号位皆为1,则Cf=1;其他未溢出情况,Cf与C都相同,所以得到第二种判断逻辑,即当Cf与C不同时表明溢出。这是在单符号位补码中应用较多的判断逻辑。
    溢出判断方法三:
    单符号位的信息量只能表示两种可能:数为正或为负,如果产生溢出,就会使符号位的含义产生混乱。将符号位扩充为两位,信息量扩大,就能判断是否有溢出及结果的正确符号。同样以前面的几个算式为例。
    例5:
    3+6=9
    00 0011
    00 0110
    00 1001
    例6:
    8+9=17
    00 1000
    00 1001
    01 0001(正溢)
    例7:
    8+(-5)=3
    00 1000
    11 1011
    00 0011
    例8:
    (-9)+(-8)=-17
    01 0111
    01 1000
    10 1111(负溢)
    通过上面的例子,可定义符号位的含义为:
    00——结果为正,无溢出;
    01——结果正溢;
    10——结果负溢;
    11——结果为负,无溢出。
    分析到这里,我们发现此题最适合用最后一种方法来解答。在双符号位中,高位就是符号位的进位Cf而低位就是结果的符号位Sf可以看到,当Cf与Sf不同时,表示溢出;而相同时,表示操作正常。能达到此效果的运算为“异或”运算,所以此题正确答案选择D。
转载请注明原文地址:https://kaotiyun.com/show/NsCZ777K
0

最新回复(0)