计算机里二进制补码为什么加1?

不明白补码为什么要加1,他们说是让计算机把减法运算也变成加法,1+(-1)=0,看不明白,为什么j加1就把加法转成减法了,看不明白,能详细解释一下吗?

简单地说,补码就是反码加1。
计算机中为什么要使用补码呢?
主要原因:1、使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。另外,两个用补 码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。 2、补码与原码的转换过程几乎是相同的。
(1)正数的补码
  与原码相同。   
【例1】+9的补码是00001001。(备注:这个+9的补码说的是用8位的2进制来表示补码的,补码表示方式很多,还有16位2进制补码表示形式,以及32位2进制补码表示形式等。)
(2)负数的补码
  符号位为1,其余位为该数绝对值的原码按位取反;然后整个数加1。   
同一个数字在不同的补码表示形式里头,是不同的。比方说-15的补码,在8位2进制里头是11110001,然而在16位2进制补码表示的情况下,就成了1111111111110001。在这篇补码概述里头涉及的补码转换默认了把一个数转换成8位2进制的补码形式,每一种补码表示形式都只能表示有限的数字。   
【例2】求-7的补码。
  因为给定数是负数,则符号位为“1”。
  后七位:+7的原码(0000111)→按位取反(1111000)→加1(1111001)
  所以-7的补码是11111001。
  已知一个数的补码,求原码的操作分两种情况:
  (1)如果补码的符号位为“0”,表示是一个正数,其原码就是补码。
  (2)如果补码的符号位为“1”,表示是一个负数,那么求给定的这个补码的补码就是要求的原码。
  另一种方法求负数的补码如下:
  例如:求-15的补码
  第一步:+15:00001111
  第二步:逐位取反(1变成0,0变成1),然后在末尾加1。
  11110001
  再举一个例子验证下:求-64的补码
  +64:01000000
  11000000
  【例3】已知一个补码为11111001,则原码是10000111(-7)。
  因为符号位为“1”,表示是一个负数,所以该位不变,仍为“1”。
  其余七位1111001取反后为0000110;
  再加1,所以是10000111。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-12-16
简单地说,补码就是反码加1。
计算机中为什么要使用补码呢?
主要原因:1、使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。另外,两个用补 码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。 2、补码与原码的转换过程几乎是相同的。
(1)正数的补码
  与原码相同。   【例1】+9的补码是00001001。(备注:这个+9的补码说的是用8位的2进制来表示补码的,补码表示方式很多,还有16位2进制补码表示形式,以及32位2进制补码表示形式等。)
(2)负数的补码
  符号位为1,其余位为该数绝对值的原码按位取反;然后整个数加1。   同一个数字在不同的补码表示形式里头,是不同的。比方说-15的补码,在8位2进制里头是11110001,然而在16位2进制补码表示的情况下,就成了1111111111110001。在这篇补码概述里头涉及的补码转换默认了把一个数转换成8位2进制的补码形式,每一种补码表示形式都只能表示有限的数字。   【例2】求-7的补码。
  因为给定数是负数,则符号位为“1”。
  后七位:+7的原码(0000111)→按位取反(1111000)→加1(1111001)
  所以-7的补码是11111001。
  已知一个数的补码,求原码的操作分两种情况:
  (1)如果补码的符号位为“0”,表示是一个正数,其原码就是补码。
  (2)如果补码的符号位为“1”,表示是一个负数,那么求给定的这个补码的补码就是要求的原码。
  另一种方法求负数的补码如下:
  例如:求-15的补码
  第一步:+15:00001111
  第二步:逐位取反(1变成0,0变成1),然后在末尾加1。
  11110001
  再举一个例子验证下:求-64的补码
  +64:01000000
  11000000
  【例3】已知一个补码为11111001,则原码是10000111(-7)。
  因为符号位为“1”,表示是一个负数,所以该位不变,仍为“1”。
  其余七位1111001取反后为0000110;
  再加1,所以是10000111。追问

主要原因:1、使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理

这两句话什么意思,还是不太白,是怎么统一处理的,又是怎么把加法变成减法的,能形象解释下吗?

本回答被提问者和网友采纳
第2个回答  2022-06-22

先看看补码的由来吧。

用十进制来说明,就比较好理解。

限定,使用 2 位 10 进制数:

  24 - 1 = 23

  24 + 99 = (一百) 23

进位一百,超出 2 位数,忽略。

此时,+99 和-1 就是等效的。

+99,就称为-1 的补数。

如果,可以使用 3 位数呢?

那么,-1 的补数,就是 +999。

负数的补数=负数 + 10^n, n 是位数。

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

计算机用二进制,补数,就改称为:补码。

使用补码,就可以把减法,转换成加法运算,从而简化硬件。

8 位 2 进制的范围是:0000 0000 ~ 1111 1111 (十进制 255)。

-1 的补码,就是:-1 + 2^8 = 255 = 1111 1111(二进制)。

-2 的补码,就是:-2 + 256 = 254 = 1111 1110。

。。。

-128 的补码,是:-128 + 256 = 128 = 1000 0000。

负数的补码,就是这么来的。

补码,与原码反码毫无关系。

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

为什么是“取反、加一”?

下面用四位二进制来说明。

如果 X =-xxxx。

前面的负号(-)说明 X 是负数。后面的 x,是 1 或 0。

那么,[X]补 = -xxxx + 2^4

       = -xxxx + 1 0000。

式中的 1 0000,可以写成: 1 + 1111。

那么,[X]补 = 1111-xxxx + 1。

式中的 1111-xxxx:

  如果 x 是 0,1-x 就是 1。

  如果 x 是 1,1-x 就是 0。

  所以,这就是对 xxxx 取反。

式中的 + 1:

  就是在取反之后,再加上 1。

经过“取反、加一”就得到 X 的补码了。

注意:

 取反时,只是对 X 的绝对值 xxxx 取反。

 此时,既没有说到“原码”,也没有说“反码”。

 更没有说“符号位不变”。

 所以,补码与“原码、反码和符号位”都没有关系。

第3个回答  2019-12-07
么原码、反码、补码的概念,只有绝对值。
对于带符号数,才会有采用什么码型来表示的问题
相似回答