二进制数反码和补码的算法

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

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

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

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

因此,原码反码,根本就没有任何用处,不必讨论。

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

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

使用了补码(正数)之后,在计算机中,就没有负数了。

同时,也就没有了减法运算。

因此,不但能简化算法,而且顺便就能简化计算机的硬件。

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

正数,怎么能代替负数呢?

你看看两位十进制数(0~99)吧:

  25 - 1 = 24

  25 + 99 = (一百) 24

只要你舍弃进位,只保留两位,+99 就能代替-1。

  +99,这就是-1 的补数。

对应关系:补数=负数+计数周期(10^2 = 100)。

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

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

8 位 2 进制数,其计数周期,就是:2^8 = 256。

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

对吗? 分别用十进制、二进制,计算一下试试:

   3  =    0000 0011

  -1  =  + 1111 1111

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

   2  =  (1)  0000 0010

只要舍弃进位,这两种算法,结果,就是相同的。

同理,-2 补码就是:254 = 1111 1110。

。。。

-128 的补码是:128 = 1000 0000。

零和正数,必须直接参加运算,不可变换。

零和正数,不需要变换,也就不存在“正数的补码。

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

补码的来源和意义,就是这些。

你如果从“原码反码符号位”开始学补码,肯定是“学不懂”的。

老外脑子不好用,周期、等效什么的,当然也是搞不懂的。

因此,才编造了“原码反码。。。”一大滩垃圾!

其实,那些都是无稽之谈,随口乱讲的,并无任何理论依据。

而且,在八位的原码反码中,都没有-128。

那么,-128 的补码,你们怎么求呢?

道振梅理云
2019-06-27 · TA获得超过3.7万个赞
知道大有可为答主
回答量:1.2万
采纳率:25%
帮助的人:909万
展开全部
计算机里的二进制数有八位、十六位等,下面以八位为例
19的二进制数为:0001
0011
那么+19
原码为
0001
0011
反码为
0001
0011
补码为
0001
0011
那么-19
原码为
1001
0011
(左边第一位表示正负数,正数为0,负数为1)
反码为
1110
1100
补码为
1110
1101
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
创业清哥GG
2019-04-10 · TA获得超过3.7万个赞
知道大有可为答主
回答量:1.2万
采纳率:34%
帮助的人:817万
展开全部
原码:
1
100011
//
符号位:正数用0表示;负数用1表示
反码:
1
011100
//
除符号位外,其它位按位取反,即0变1,1变0
补码:
1
011101
//
反码的基本上加1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式