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

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

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

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

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

数字 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。

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

------

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

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

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

计算机,可不做这些事。

悉晓慧喜秉
2019-11-05 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:32%
帮助的人:874万
展开全部
引入原码
反码
和补码的目的就是为了解决减法问题,因为计算机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%
帮助的人:4606万
展开全部
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
做而论道
高能答主

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

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

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

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

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

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

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

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

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

你看:

   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

提交
取消

辅 助

模 式