二进制补码运算溢出判断

2024-11-01 06:12:19
推荐回答(4个)
回答1:

补码运算的溢出判别方式为双高位判别法,利用Cs表示符号位是否进位,利用Cp表示最高数值位是否进位。如果Cs ^ Cp的结果为真,则代表发生了溢出(运算结果大于0则为负溢出,小于0则为正溢出),否则运算结果正确。

例如:

 1000 0011(补码为-3,原码为-125)        0000 0011(补码为3,原码为3)

+1100 1001(补码为-73,原码为-55)      +1100 1001(补码为-73,原码为-55)

10100 1100(补码为76,原码为76)        01100 1100(补码为-76,原码为-52)

Cs为1,Cp为0所以产生了负溢出。            Cs为0,Cp为0所以结果正确。

扩展资料

二进制补码运算规则:

1、正数:原码=反码=补码

2、负数:原码(第一位是1符号位)=反码(除第一位符号位外,其它按位取反)=补码(反码+1)

3、0:原码=反码=补码=0

举例:

1、15-5=15+(-5)=10

原码:

15:0000 1111

-5:1000 0101

反码:

15:0000 1111

-5:1111 1010

补码:

15:0000 1111

-5:1111 1011

参考资料来源:

百度百科——补码

回答2:

判断溢出,有三种方法:
1.由人进行计算,并判断:正+正=负、负+负=正、...,这就是溢出。
2.由CPU进行计算,由人观察标志位:OV=1,就是溢出。
3.由CPU进行计算,并给出溢出标志位:C7异或C6,为1,就令OV=1。
楼主问的是那种方法?

回答3:

发生溢出,是数据过大,超出了补码所能表示的范围。

具体表现,就是:符号位错误。

可能发生溢出的算法有:正数+正数负+负

此外还有:正-负负-正

如果结果的符号,不符合正常的规律,就是溢出了。

CPU 计算后,会自动判断,如果溢出,将置位 OF。

图中的四个选项,只有 (d)B-C,才有可能溢出。

回答4:

B