有符号二进制数10000000作为补码,求原码

2024-11-29 00:35:06
推荐回答(3个)
回答1:

10000000-00000001=10000000+11111111=011111111 ,结果为01111111,而且有进位,表示有溢出,最高为必须参与运算,因为机器是不知道是否原码还是补码,这也就是把减法变成加法的方法。128已经超出一个字节的有符号整数的表示范围了,-128为10000000,正数只能到127。

回答2:

有符号二进制数 1000 0000 作为补码,求原码

这是一个无解的难题。

按照“取反加一”的说法,每个补码,都有一个对应的原码。

但是,就有这样一种情况:

 -128 具有八位的补码,却没有原码和反码。

取反加一吧! 

拿什么取反加一?

鼓吹“取反加一”的小伙伴,是不是有些尴尬呀?

-----------------------

其实,补码的来源,和原码反码符号位,是毫无关系的。

计算机所使用的补码,是由“数值”推导出来的。

补码,有自己定义式。如下:

 当 X >= 0,  [ X ]补 = X;     零和正数不用变换。

 当 X < 0,  [ X ]补 = X + 2^n。 n 是补码的位数。

这公式,是通用的。 你去翻翻书,应该可以找到。

---------------------

那么,[-128]补 = -128 + 2^8 = 1000 0000 (二进制)。

所以,补码 1000 0000,它代表的数值,就是-128。

而-128 的八位原码和反码,就别想了。

回答3:

符号位不取反吧