什么是原码、反码、补码?

 我来答
沙里波特
2022-01-11 · TA获得超过5246个赞
知道大有可为答主
回答量:1.1万
采纳率:100%
帮助的人:627万
展开全部

计算机中,并没有原码和反码。

正负数据,在计算机中,只是以补码存放的。

以八位二进制来说明补码结构。

数字 0,就是以 0000 0000 存放。

数字 1,就是加上 1,得 0000 0001。

其它,继续加,就行了。

数字 127,就是 0111 1111。

------

数字-1,就是 0 减一,即:

  0000 0000-1 =(借位 1)  1111 1111。

只保留八位,存放形式就是 1111 1111 (十进制 255)。

数字-2,就再减一,得:1111 1110 (= 254)。

数字-3,就再减一,得:1111 1101 (= 253)。

其它,继续减,即可... ...

数字-128,存放形式就是:1000 0000 (= 128)。

------

以上这些,就是补码。

八位补码可以表示:-128~+127。

计算公式:

 负数的补码=【256+该负数】

 正数的补码,就是正数本身

(如果需要二进制,你自己再变换。)

------

用补码代替负数,就可以把减法,转换为加法运算。

因此,计算机只要有一个加法器,就够用了。

例如: 7-3 = 4。

用补码的计算过程如下:

    7 的补码=0000 0111

    -3的补码=1111 1101

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

   得:  (1)  0000 0100 = 4 的补码

舍弃进位,只保留八位作为结果,就是 4。

这就用加法,解决了负数以及减法的问题。

------

原码和反码,并没有这些功能。

所以,在计算机中,并没有原码和反码。

所谓的“取反加一”,由谁算呢?

计算机,可不做这些事。

亚远景信息科技
2024-12-02 广告
上海亚远景信息科技有限公司是国内汽车行业咨询及评估领军机构之一,深耕于ASPICE、敏捷SPICE、ISO26262功能安全、ISO21434车辆网络安全领域,拥有20年以上的行业经验,专精于培训、咨询及评估服务,广受全球车厂及供应商赞誉,... 点击进入详情页
本回答由亚远景信息科技提供
悉晓慧喜秉
2019-11-05 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:32%
帮助的人:860万
展开全部
引入原码
反码
和补码的目的就是为了解决减法问题,因为计算机CPU的运算器中只有加法器,要把减法转化成加法来计算.
举个例子,A表示十进制数“+16”,B表示十进制数“-19”,把这两个数的原码直接相加,得:
A=+16
(A)原=00010000
B=-19
(B)原=10010011
00010000
+
10010011
————
10100011
其结果符号位为1是负数,其数值位为100011,即等于十进制数“-35”,这显然是错的结果.
再比如,十进制数“+16”与“+19”的原码直接相减,得:
00010000
-
00010011
————
11111101
结果为“-125”,这又是错的.
但是引入补码后,加减法都可以用加法来实现,如“-16+11”的运算:
11110000
+
-16的补码
00001011
11的补码
————
11111011
-5的补码
如果是“-16-11”,那么就转化为加法运算“-16+(-11)”
11110000
+
-16的补码
11110101
-11的补码
————
111100101
-27的补码
在字长为8位的系统中,最高位所产生的进位被自然丢弃,运算结果的机器数为11100101,是-27的补码形式,结果正确.
顺便告诉你一些其它的东西:
1.二进制数中,两数的补码之和等于两数和的补码.
2.补码=反码+1
3.反码=原码除符号位外其它数值取反(即该数的绝对值取反),即“0”变“1”,“1”变“0”.
4.任何正数的原码
反码
补码的形式完全相同(即都是自身,不变)
5.在计算机中,有符号的数都是采用补码来表示的.
6.计算的时候,符号位也参与运算.
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-10-23
展开全部
1):补码加法公式
   [X+Y]补 = [X]补 + [Y]补

2):补码减法公式
[X-Y]补 = [X]补-[Y]补 = [X]补 + [-Y]补
其中:[-Y]补称为负补,求负补的办法是:对补码的每一位(包括符合位)求反,且未位加1.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2020-01-09 · TA获得超过2.4万个赞
知道答主
回答量:9.4万
采纳率:12%
帮助的人:4534万
展开全部
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
做而论道
高能答主

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

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

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

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

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

使用补码的目的,就是:简化硬件。

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

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

用十进制来说明,比较容易理解。

你看:

   25 - 1 = 24

   25 + 99 = (一百) 24

你如果舍弃进位,+99 就能代替-1;加法,也就能代替减法。

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

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

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

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

计算机用二进制,补数,就叫做补码了。

对于 8 位 2 进制,补码 = 负数 + 2^8 = 负数 + 256。

所以,-1 的补码就是 255 = 1111 1111 (二进制)。

-2 的补码就是 1111 1110。

。。。

正数,不需要变换,必须直接参与运算。

所以,正数,它就没有补码。

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

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

     +7 = 0000 0111

   [-2]补  = 1111 1110

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

   得: (1)  0000 0101  = +5

舍弃进位,结果,就是非常正确的。

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

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

补码,本来,是很简单的,也很容易理解的。

但是,从“原码反码取反加一。。。”来学习补码,就不容易理解了。

那么,“原码反码。。。”,老师总是讲这些,是想干什么呢?

这些老师脑子不好用,所以才弄出这些骚操作。

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

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式