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

发布网友 发布时间:2022-04-24 14:32

我来回答

5个回答

热心网友 时间:2023-10-16 13:25

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

热心网友 时间:2023-10-16 13:25

抄的网友的,如下:

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

加法器

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

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

模、补数

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

把某物体左转 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

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

热心网友 时间:2023-10-16 13:26

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

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

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

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

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

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

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

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

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

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

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

先用十进制来说明:

  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。

热心网友 时间:2023-10-16 13:26

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

  .
  参考链接:
  .
  http://zhidao.baidu.com/question/213963613.html
  .
  http://zhidao.baidu.com/link?url=bJxUku4Qb76UC0i-nBIxK_jQ7GvYMDkq49lxwlODR2ln__t7qfz4dGOigWyonLkJggi9LWtt7EyxTw54zWGFJ_

热心网友 时间:2023-10-16 13:27

正数的补码是其本身,负数的补码是真值从右往左开始的遇到第一位1后,之后每一位取反

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com