什么是补码

 我来答
帐号已注销
2023-03-07 · TA获得超过447个赞
知道小有建树答主
回答量:3171
采纳率:99%
帮助的人:70.9万
展开全部

补码是有符号数的一种二进制表示方式。补码,是一个“代替负数”的正数。使用了补码,计算机中,就没有负数了,同时,也就没有了减法运算。因此,使用补码,就可以简化算法,简化硬件。

我们用B2Tw来表示一个补码。其中w代表二进制数的位长,B2T的含义其实是“二进制转补码”。计算补码实际表示的数,我们需要将每一位上的值和对应权重相乘然后进行相加。每一位(索引记为i,从0开始,从右往左递增)的权重为2i,但最高位的权重比较特殊,需要取负数,为-2w-1。

对于一个位长为w的补码表示,最大值TMaxw为2^(w-1) - 1,此时最高位为0,其余位都是1。最小值TMinw为-2^(w-1),此时最高位为1,其余位都是0。如对于4位的补码,最大值TMax4 = B2T4(),对应的值为2^3 - 1 = 7,最小值为B2T4(),对应的值为-2^3 = -8。

正数的补码就是原码本身,负数的补码是其反码加1。计算机中的有符号数有即原码、反码和补码。三种表示方法均有符号位和数值位两部分。

符号位都是用0表示“正”,用1表示“负”。在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。

做而论道
高能答主

2023-03-19 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.1亿
展开全部

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

原码和反码,计算机中,都是不存在的。

补码,其实,就是一个“代替负数”的正数。

使用了补码,计算机中就没有负数了,也就没有了减法运算。

使用了补码,可以简化算法,从而就能简化计算机的硬件。

原码和反码,都没有这种功能,所以,它们根本就没有用!

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

补码(即正数),怎么能代替负数呢?

根源在于“计数系统的周期性”。

如果使用 2 位 10 进制数(0~99),计数周期就是 10^2 = 100。

此时,就可以有:

   25 - 1 = 24

   25 + 99 = (一百) 24

舍弃进位,只取两位数,这两种算法,功能就完全相同。

+99,就能代替-1。

+98,也可以代替-2。

。。。

这些“代替负数的正数”,就可称为“负数的补数”。

关系式:补数 = 负数 + 10^n。

    n 是补数的位数。

    10^n 是 n 位数的计数周期。

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

这个关系式,在计算机中,也可以使用。

8 位 2 进制:0000 0000~1111 1111 (十进制 255)。

它们的计数周期是:2^8 = 256。

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

求负数补码的计算公式,也是: 补码 = 负数 + 周期。

-1 补码就是:-1 + 256 = 255 = 1111 1111(二进制)。

-2 的补码是: 254 = 1111 1110。

。。。

正数,不可转换,必须直接参加运算。

所以,零和正数,并不存在补码。

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

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

列竖式计算如下:

        5 = 0000 0101

    -7的补码 = 1111 1001

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

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

舍弃进位,只保留八位,这就用加法,实现了 5-7。

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

补码和“符号位原码反码 ... ”,并无半点关系。

“符号位原码反码取反加一符号位不变”,数学不好的老外,才会用这些骚操作。

当你理解了“周期性”,就不必理会那些无聊的说法。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式