关于二进制负数的补码

 我来答
惠企百科
2022-12-14 · 百度认证:北京惠企网络技术有限公司官方账号
惠企百科
惠企百科网是一家科普类综合网站,关注热门中文知识,集聚互联网精华中文知识,本着自由开放、分享价值的基本原则,向广大网友提供专业的中文知识平台。
向TA提问
展开全部

求负整数的补码,将其原码除符号位外的所有位取反(0变1,1变0,符号位为1不变)后加1。

同一个数字在不同的补码表示形式中是不同的。比如-15的补码,在8位二进制中是11110001,然而在16位二进制补码表示中,就是1111111111110001。以下都使用8位2进制来表示。

例子:求-5的补码,过程如下:-5对应正数5(00000101)→所有位取反(11111010)→加1(11111011),所以-5的补码是11111011。数0的补码表示是唯一的。

[+0]补=[+0]反=[+0]原=00000000;[-0]补=11111111+1=00000000。

扩展资料:

补码系统的最大优点可以在加法或减法处理中,不需因为数字的正负而使用不同的计算方式。只要一种加法电路就可以处理各种有号数加法,而且减法可以用一个数加上另一个数的补码来表示,因此只要有加法电路及补码电路即可完成各种有号数加法及减法,在电路设计上相当方便。

另外,补码系统的0就只有一个表示方式,这和反码系统不同(在反码系统中,0有二种表示方式),因此在判断数字是否为0时,只要比较一次即可。在n比特的补码加减法中,忽略第n+1个比特的作法在各种有号数加法下都适用(不过在判断是否溢出(overflow)时,仍然会用到第n+1个比特)。

因此在补码的系统,加法电路就可以处理有负数的加法,不需另外处理减法的电路。而且,只要有电路负责数字的变号(例如将1变换为-1),也可以用加法电路来处理减法。而数字的变号就用计算数字的补码来完成。

参考资料来源:百度百科——补码

沙里波特
2024-11-29 · TA获得超过5248个赞
知道大有可为答主
回答量:1.1万
采纳率:95%
帮助的人:631万
展开全部

补码,是计算机进行正负数计算时,唯一使用的“代码”。

那么,什么是“二进制的补码”呢?

你先看看十进制数吧,看两位数就行:0 ~ 99。

这就可以有:27 + 99 = (一百) 26,

你也可以这么做:27 - 1 = 26。

如果你忽略了进位,+99 就是-1,加法,也就完成了减法运算。

舍弃进位,就是减去 100。 由此,+99 才相当于-1 !

同理,在计算机中舍弃进位:

● 就可以用正数(即所谓的“补码”)当做负数;

● 也就能用加法,代替减法运算!

计算机中只有加法器,没有减法器,就是因为在计算时舍弃了进位。

重要问题说三遍:

* 补码的来历,是【舍弃进位】!!! *

* 补码的来历,是【舍弃进位】!!! *

* 补码的来历,是【舍弃进位】!!! *

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

计算机,使用的是二进制数。

八位机使用八位数:0000 0000 ~ 1111 1111。

就相当于十进制数:0 ~ 255。

如果出现进位就是:2^8 = 256。

在这种环境中,就要用 255 (1111 1111) 当-1 了。

254 (1111 1110),就是-2 了。

。。。 。。。

128 (1000 0000),就是-128 !

以上这 128 个正数(128 ~ 255)就能代表负数(-128 ~ -1)进行计算。

以上这些正数,就是计算机专家所发明的“负数的补码”。

(补码,和符号位原码反码取反加一,神马关系都没有!)

.

那么,127 (0111 1111),能不能当负数?

不能!

它的最高位是 0,相加后,产生不了进位 1!

即使舍弃进位 0,它也不能呈现出负数的特点!

所以,0 ~ 127,都不能代表负数,只能代表它们自己。

因此,计算机专家就总结出来了:零和正数的补码,就是它们自己!

这句话,怎么有点别扭。。。

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

那么,“补码的最高位 1,就是一个负数”的原因,如下。

* 能产生进位的补码,才是负数 !!! *

* 能产生进位的补码,就是负数 !!! *

* 能产生进位的补码,必定是负数 !! *

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

看懂了吗? 最高位,并非是人为定义的符号位!

如果它真是正负号(+、-),又怎么能参加计算呢?

而且,+99,也没有符号位啊,它怎么能当负数使用呢?

由此可知,符号位的说法,站不住脚。

由此可知,原码和反码,都是胡扯!

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

其实,所谓的补码,根本就不是神马码,它也是正常的二进制数。

虽然,它们是一组数据中,较大的一半,但是,它们仍然还是“数”,不是码。

利用“补码”代替正负数,进行加减计算,与“无符号数”的加法算法,是完全相同的!

那么,“有符号数”、“无符号数”,就可以【共用同一个加法器】!

这就实现了“两种类型数据”的统一、“两种算法(加减)”的统一。

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

所以,计算机专家费尽心思创造的原码和反码,诞生后,随即就被抛弃了。

虽然,还有许多人,苦心孤诣的琢磨原码和反码的算法,但是,都没有任何成果。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
做而论道
高能答主

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

补码,是一个“与负数等效”的正数。

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

你如果学过三角函数,就知道,三角函数的周期(T)是 2π。

任何负的角度,加上 2nπ,都能得到:等效的正角度。

比如,-π/2,与其等效的,就是:+3π/2。

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

2 位 10 进制数,是:0 ~ 99。

其计数周期就是:T = 10^2 = 100。

此时,可以有:

  25 - 1 = 24

  25 + 99 = (一百) 24

你只要舍弃进位,留下 2 位数,+99 就和-1 等效。

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

8 位 2 进制数,是:0000 0000~1111 1111。

(对应的十进制是:0 ~ 255。)

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

任何负数,加上 nT,都能换算成与其等效的正数。

-1 的等效值,就是:-1 + 256 = 255 = 1111 1111。

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

正常计算,可以这样做: 1 - 1 = 0。

用等效的正数计算,即: 1 + 1111 1111 = (1) 0000 0000。

你舍弃进位,只保留 8 位,这两种算法,效果就是相同的。

按这思路做,就消除了负数,并且,加法,也就代替了减法。

计算机的硬件,也就因此而得到了简化。

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

这个“与负数等效”的正数,就是计算机专业所说的“补码”。

计算机专家的数学底子太洼,搞不懂什么是周期、什么是等效。

就自己胡编乱造:“符号位原码反码取反加一符号位不变”。

老外的算术能力差,由此可见一斑。


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

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式