负数的补码如何计算?举个例子!

负数的补码如何计算?举个例子!

正数的原码,补码,反码都相同,都等于它本身
负数的补码是:符号位为1,其余各位求反,末位加1
反码是:符号位为1,其余各位求反,但末位不加1
也就是说,反码末位加上1就是补码
-1011
原码:11011
反码:10100 //负数时,反码为原码取反
补码:10101 //负数时,补码为原码取反+1
移码:00101 //原数+10000
温馨提示:答案为网友推荐,仅供参考
第1个回答  2022-09-19

在计算机系统中,数值,一律采用补码来表示和存储。

补码,并非是什么新发明。

补码的来源,就是简单的加减法。

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

如果,码长是八位,总共可构成 256 组代码。

0,在计算机中的存储格式就是:0000 0000。

+1,你就加上 1,就得:0000 0001。

+2,你就再加一个,得:0000 0010。

。。。依次递增。。。

+127,的存放格式,是:0111 1111。

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

负数,也没有什么新意,也就是逐次减一。

0,刚刚说过的,是:0000 0000。

-1,你就减去 1,就得:1111 1111 (十进制 255)。

-2,你就再减一次,得:1111 1110 (十进制254)。

。。。依次递减。。。

-128,的存放格式,是:1000 0000 (十进制 128)。

不能再减了。 再减,就是 +127 = 0111 1111 了。

以上所说这些,就是补码。

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

由此,你就可以推导出,求补码通用的公式:

  X >= 0, [ X ]补 = X;   即 0 和正数不用变

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

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

例如,求-128 的八位补码:

  [-128]补码=-128 + 2^8

        = 128 =1000 0000 (二进制)

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

例如:用八位补码计算:5 - 7 =-2。

计算如下:

    5 = 0000 0101

 [-7]补码 = 1111 1001

--相加-----------

  得: (1) 1111 1110 = [-2]补码

进位,不属于八位补码,舍弃后,结果正确。

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

由此可知:

使用了补码,减法,就可以用“加法运算”来实现了。

使用了补码,不但简化了运算,也就能够简化硬件。

原码和反码,都没有这种功能。

所以,计算机,根本就不使用它们。

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

补码的形成,与“原码反码符号位取反加一”,毫无关系。

那些乱七八糟的事,都是数学不好老外,胡编乱造的。

在计算机里面,这些,都是没有用的。

不理会它们,也不会影响你学习和使用计算机。

本回答被网友采纳
相似回答