为什么要引入数的反码和补码?

 我来答
做而论道
高能答主

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

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

原码和反码,都是不用的。

补码的功能,类似于:

  时针,倒拨 3 小时,可以用正拨 9 小时代替。

利用这种思路,计算机中的负数,也可以用正数(即补码)代替。

于是,计算机中,就没有负数了。

同时,减法运算,也都不存在了。

因此,借助于补码,就能统一加减法,从而简化计算机的硬件。

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

十进制来说明比较容易理解:

  25 - 1 = 24

  25 + 99 = (一百) 24。

只要忽略进位,仅保留 2 位数,+99 就能代替-1。

同理,+98 也可以代替-2。

。。。

这些正数,就是“负数的补数”。

通用的公式是:补数 = 负数 + 10^n。

       n 是补数的位数。

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

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

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

一个字节,是 8 位 2 进制。

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

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

求负数补码的公式是:补码 = 负数 + 2^n。

那么:

-1 的补码 = -1 + 256 = 255 = 1111 1111。

-2 的补码 = -2 + 256 = 254 = 1111 1110。

。。。

正数,则必须直接参加运算,不许作任何变换。

因此,正数,它就没有补码。

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

例如,7-2 = 5,用补码计算如下:

      7 = 0000 0111

   [-2] 补 = 1111 1110

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

  得: (1)   0000 0101  = 5

舍弃了进位,结果就完全正确。

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

用补码(正数)替代负数,就能把“减法转换为加法运算”。

原码和反码,都没有这种功能。所以,计算机,并不使用它们。

实际上,原码和反码,它们根本就不存在。

补码的来源,与原码反码也毫无关系。

“原码反码取反加一、符号位也能参加运算”...

这些,都没有什么理论依据。

从“取反加一”来学习补码,就弄不清楚“为什么会引入补码”。

意法半导体(中国)投资有限公司
2023-06-12 广告
单片机,即单片微控制器,也称为单片微型计算机,是将中央处理器(CPU)、存储器(ROM,RAM)、输入/输出接口和其他功能部件集成在一块 在一个小块的集成电路上,从而实现对整个电路或系统的数字式控制。单片机不是完成某一个逻辑功能的芯片,而是... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
沙里波特
2019-11-29 · TA获得超过5248个赞
知道大有可为答主
回答量:1.1万
采纳率:95%
帮助的人:631万
展开全部
下面是抄来的:
可以想像一下,有个小孩子,很小,不很识数,只认识 0 ~ 99,还不会做减法。

教这样的小孩做减法,就可以告诉他:-1,可以用+99来代替。

24 - 1 = 23

24 + 99 = (1)23

忽略进位,是不是就是一样的?

那么,98,就是-2;

97,就是 -3;

……

50,就是 -50。

看明白这些,就可以理解了《补码定义式》。

--

对于八位的二进制数,是 0 ~ 1111 1111(255);

255,就是 -1;

254,就是 -2;

……

128,就是-128。

这就是按照《补码定义式》,求出来的《负数的补码》。

而 0~127,按照《补码定义式》,就是《正数的补码》。

--

128 ~ 255,其二进制数的最高位是1,这就被他们吹嘘成了符号位。

50~99,是在十进制数里面,也是代表负数的,他们就没有说的了。

补码理论,适用于任何的进制。你可以自己归纳出来。

比如,反转 90 度,可以用正转 270 度代替。270,有符号位吗?

钟表,倒拨 20 分,可以用正拨 40 分代替。40,有符号位吗?

符号位,是根本就不存在的。

补码,有个定义式,按照定义求补码,根本就不涉及原码、反码,也没有什么符号位。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
王村长秘书
2020-03-10
知道答主
回答量:1
采纳率:0%
帮助的人:636
展开全部
弥补算法 原码不能直接参与 反码弥补负数的算法 补码弥补了反码“0”表示不唯一的问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xbao63
2019-12-25 · TA获得超过1.3万个赞
知道大有可为答主
回答量:1.7万
采纳率:76%
帮助的人:2083万
展开全部
引入补码,可以把二进制减法变成加法运算。
比如: 5-3 = 2
(0000 0101)原 + (1111 1101)补
= (0000 0010)原 = 2
5-7 = -2
(0000 0101)原 + (1111 1001)补
= (1111 1110)补 = -2
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
听不清啊
高粉答主

2019-11-27 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.9亿
展开全部
1、 原码:是机器数的一种简单的表示法。其符号位用0表示正号,用1表示负号,数值一般用二进制形式表示。
优点:最简单直观。
缺点:不能直接参加运算,可能会出错。
原码来历:在机器中,只能识别二进制数字,所以所有的数字都用原码来表示。
2、 反码:可由原码得到。如果机器数是正数,则该机器数的反码与原码一样;如果机器数是负数,则该机器数的反码是对它的原码(符号位除外)各位取反而得到的。
优点:解决负数加法运算问题,将减法运算转换为加法运算,从而简化运算规则。
缺点:0的表示不唯一
反码来历:为了解决“正负相加等于0”的问题,在“原码”的基础上,人们发明了“反码”
3、 补码:可由原码得到。如果机器数是正数,则该机器数的补码与原码一样;如果机器数是负数,则该机器数的补码是对它的原码(除符号位外)各位取反,并在未位加1而得到的
优点:可以把负数直接拿来算加法。
缺点:容易忘记公式,计算错误。
补码来历:计算机里面,只有加法器,没有减法器,所有的减法运算,都必须用加法进行,用补数代替原数,可把减法转变为加法。
4、 在计算机中为什么要使用补码:由于原码和反码中,+0与-0的表示并不相同,所以计算机中一般使用补码。其实还有一个更重要的作用,就是利用高位溢出,将减法运算变成加法。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式