两个二进制有符号数(10111010)与(1101001)相加,结果是什么是否溢出

如题所述

如果是单字节8位数的话结果是 00100011,不溢出因为第7位和第6位都有进位,所有结果不溢出。

溢出的判别:

计算机中判别溢出的方法通常采用双高位判别法。双高位判别法利用符号位及最高数值位的进位情况来判断是否发生了溢出。为此,需引进两个符号: Cg和Cp.

Cs:若符号位发生进位,则Cs=1;否则Cs=0。

Cp:若最高数值位发生进位,则Cp=1;否则Cp=0

当两个正数补码相加时,若数值部分之和大于2n-1,则数值部分必有进位Cp= 1;而符号位却无进位Cg=0。这时CsCp的状态为“01", 发生正溢出。

当两个负数补码相加时,若数值部分绝对值之和大于2n-1,则数值部分补码之和必小于2n-1,Cp=0;而符号位肯定有进位Cg= 1,这时CSCP的状态为“10”, 发生负溢出。当不发生溢出时,Cg和Cp的状态是相同的,即CgCp的状态为“00”或 “11"。

扩展资料

有符号数是针对二进制来讲的。用最高位作为符号位,“0”代表“+”,“1”代表“-” ;其余数位用作数值位,代表数值。

有符号数的表示:计算机中的数据用二进制表示,数的符号也只能用0/1表示。一般用最高有效位(MSB)来表示数的符号,正数用0表示,负数用1表示。

有符号数的编码方式,常用的是补码,另外还有原码和反码等。用不同二进制编码方式表示有符号数时,所得到的机器数可能不一样,但是真值是相同的。

上面都是两个8bit相加,从左至右第一个bit位是符号位,第二个bit位是最高数值位,如果结果超出8bit,则超出的位不会在计算机中存储,因此造成溢出现象

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-17
如果是单字节8位数的话
结果是 00100011 ,不溢出
因为第7位和第6位都有进位,所有结果不溢出。追问

第六位和第七位都有进位为什么还不会溢出?

追答

溢出是说数据溢出,计算结果超出范围。
对有符号数来说,进位就不一定会数据溢出了。
有符号数相加,6,7位不进位,或同时进位,都不溢出。
只是其中一个进位的话,就会溢出。
8位有符号数,范围是 -128--127
比如 -1 + -1 = -2
1111 1111 + 11111111 = 11111110 这6,7位都进位了,但是数据并没有溢出
相反 127+1 =128
0111 1111 + 00000001 = 10000000 只有6位进位,7位并没有进位,但是数据溢出了
因为128超出范围了,而且计算结果 10000000 对有符号数来说是 -128
127+1=-128 显然是溢出了

本回答被提问者采纳
第2个回答  2011-04-30
结果是100100011
是否溢出要看范围
第3个回答  2012-09-13
100
相似回答