补码到底是什么意思,百度百科里的解释根本看不懂。

如题所述

补码,为方便计算机运算,原理可以参考时钟,例如要将钟从10调到7,可以往回调3(-3),或者往后调9(+9),在这里-3与+9就是等价的,对于时钟来讲-3的补码就是+9。在计算机中对于n位2进制数的计算,由于位数确定,加上一个负数,等同于加上2的n-1次方加上此负数的值(最高位位符号位),所加的值即为负数的补码。整数补码算法楼上已有,不再重复。小数补码的计算以及溢出之类的相关知识建议参考下三级偏硬的教程,一般都会有比较详细的描述。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-11-16

抄的网友的,如下:

(不敢写链接,否则,百度知道会疯的。)

加法器

计算机里面,只有加法器,没有减法器,所有的减法运算,都必须用加法进行。

即:减去某个数字(或者说加上某个负数)的运算,都应该研究如何用加法来完成。

模、补数

在日常生活当中,可以看到很多这样的事情:

把某物体左转 90 度,和右转 270 度,在不考虑圈数的条件下,最终的效果是相同的;

把分针倒拨 20 分钟,和正拨 40 分钟,在不考虑时针的条件下,效果也是相同的;

把数字 87,减去 25,和加上 75,在不考虑百位数的条件下,效果也是相同的;

……。

上述几组数字,有这样的关系:

  90 + 270 = 360

  20 + 40 = 60

  25 + 75 = 100

式中的 360、60 和 100,就是“模”。

式中的 90 和 270、20 和 40,以及 25 和 75,就是一对对“互补”的数字。

知道了“模”,求某个数字的“补数”,就是轻而易举的了:

如果模为 365,数字 120 的补数为:365 - 120 = 245。

用补数代替原数,可把减法转变为加法。出现的进位就是模,此时的进位,就应该忽略不计。

二进制数的模

前面说过的十进制数 25 和 75,它们是 2 位数的运算,模是 100,即 1 的后面加上 2 个 0。

如果有 3 位数参加运算,模就是 1000,即 1 的后面加上 3 个 0。

这里的 1000,是十进制数的一千,可以写成 10^3,即 10 的 3 次方。

推论:有多少位数参加运算,模就是在 1 的后面加上多少个 0。

对于二进制数字,模也是这样推算。

如果是 3 位二进制数参加运算,模就是 1000,即 1 的后面加上 3 个 0;

那么当 8 位二进制数参加运算,模就是 1 0000 0000,即 1 的后面加上 8 个 0。

16 位二进制数参加运算,模可就大了,是 1 的后面加上 16 个 0。

注意:这里提到的 1、0,都是二进制数。

8 位二进制数的模可以按照十进制写成 2^8,即 256。

16 位数二进制数的模,就是 2^16,按照十进制,它就是 65536。

二进制数的补码

求二进制数的补数,目的是往计算机里面存放。

在计算机里面,存放的数字什么的,都称为机器码;那么二进制形式的补数,也就改称为补码了。

一般情况下,都是以 8 位二进制数来讨论补码,少数也有用 16 位数的。

计算时加上正数,是不需要进行求取补数的;只有进行减法(或者加上负数),才需要对减数求补数。

补码就是按照这个要求来定义的:正数不变,负数即用模减去绝对值。

已知一个数 X,其 8 位字长的补码定义为:

      / X 0 <= X <= +127 ;正数和0的补码,就是该数字本身

 [X]补 = |

      \ 2^8 -|X| -128 <= X < 0 ;负数的补码,就是用 1 0000 0000,减去该数字的绝对值

例如 X = -126,其补码为 1000 0010,计算方法如下:

    1 0000 0000

   - 0111 1110

 -----------

     1000 0010

可以看出,按照补码的定义来求补码,概念十分清晰,方法、步骤也是十分简单的。

本回答被网友采纳
第2个回答  2022-04-30

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

原码和反码,都是没有任何用处的。

【补码】,其实,就是一个【代替负数进行运算的正数】。

而正数,直接就可以运算,不需要由谁来代替。所以,正数,它就没有补码!

那么,关于正数补码的讨论,都是无稽之谈。说正数的补码与原码反码相等,更是无聊至极!

利用补码,可以把负数,用正数代替,也就把减法,转换成加法来运算。

这样就统一了加减法运算,因此,就可以简化计算机的硬件。

而原码反码并不具备这种功能。所以,计算机只是使用补码,并不用原码和反码。

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

补码,怎么就能【代替负数】呢?

这种现象,源于数字的周期性。

先用十进制来说明:

  24 - 1 = 23

  24 + 99 = (1)  23

舍弃进位,-1 就可以用 +99 来代替。

-1 就和 +99 是等效的。

这里用的是 2 位 10 进制数,计数周期就是 10^2 = 100。

计算时忽略这个周期,负数就可以用正数代替。

+99 就是-1 的补数。

计算公式:补数=负数+周期。

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

上过中学的同学,都知道,三角函数的周期是 2π

任何角度 X,加上 2,都和原来的 X 相等效。

一个周期,你可以选用 (-π ~+π ) 或 ( 0 ~ 2π ),都是可以的。

如果,你不喜欢负的角度(如π/2),想把它换算到正的角度,该怎么办?

很简单,你只要:π/2 + 周期(2π)= +3π/2,这就变换成正的了。

上过中学就知道,+3π/2 与负角度-π/2,完全是等效的。

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

计算机用二进制,补数,则称为补码。

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

8 位 2 进制的计数周期是:2^8 = 256。

-1 的补码,就是:-1 + 256 = 255 = 1111 1111。

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

。。。

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

以上,就是 128 个负数的补码。

而 0000 0000~0111 1111,则不需转换,直接代表零和正数。

--------

计算示例: 7-3 = 4。

用八位补码的计算过程如下:

       7  =0000 0111

    -3 的补码=1111 1101 = 253

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

   得   (1)   0000 0100 = 4

舍弃进位,只保留八位作为结果,就求出了 7-3。

第3个回答  2014-01-28
  所有的负数的反码等于原码各位取反;补码等于反码加一. 十六进制也是先化成2进制的在化补码。 补码的用途是让机器学会减法运算的。应为所有的处理器是电路做的,电路其实只是加法器,只能做加法。如何能让电脑做减法呢,就用补码啊。减去一个数就等于加上她的补码。于是减法就转换为机器能执行的加法了,于是电脑就能算减法了.

  .
  参考链接:
  .
  http://zhidao.baidu.com/question/213963613.html
  .
  http://zhidao.baidu.com/link?url=bJxUku4Qb76UC0i-nBIxK_jQ7GvYMDkq49lxwlODR2ln__t7qfz4dGOigWyonLkJggi9LWtt7EyxTw54zWGFJ_
第4个回答  2014-01-28
正数的补码是其本身,负数的补码是真值从右往左开始的遇到第一位1后,之后每一位取反
相似回答