问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

为什么计算机要使用补码??

发布网友 发布时间:2023-03-22 20:42

我来回答

2个回答

热心网友 时间:2023-10-12 00:23

[toc]

开门见山,我认为有两点最重要的原因:

之前在网上查资料,查到的原因大多数都是解释了第一点,而且解释的有理有据令人信服。
所以我这里先说第二点,规则一致,这个是看了 深入理解计算机系统 的公开课学到的。
B站深入理解计算机系统公开课(有中文字幕,强烈推荐)

顺便提一嘴,研究这种问题不要用很大的数去想,就用4位数去思考反而能想的很清楚。

假设我们有一个只有4位的计算机,计算乘法 -2 * -3 的值。如果使用原码或者反码进行计算,

注意,乘法的计算规则是:直接截断保留最低4位,保留后的最高位即为符号位。

-2 的补码: 1110 转换成无符号数(十进制): 14
-3 的补码: 1101 转换成无符号数(十进制): 13

无符号数 14 * 13 = 182

将182 转换成 二进制 并且只保留最低 4 位: 0110 (0110的十进制是 6, 等于正确答案)

-2 的原码: 1010 转换成无符号数(十进制): 10
-3 的原码: 1011 转换成无符号数(十进制): 11

无符号数 10 * 11 = 110

将110 转换成 二进制 并且只保留最低 4 位: 1110 (1110的十进制是 -6 或者 14,均不等于正确答案 6)

如果你觉得这是个巧合,那么可以自己试几个数算一下,或者用反码也算一下,看看是什么结果。

可以简化硬件的计算,因为硬件就是单纯的电路板,它可不知道什么符号位,它能做的就是把接收到的两个值做运算。

如果计算机使用原码,那么是不是cpu需要准备两套运算电路,运算前还要做个 if else 判断?一套给有符号数用,一套给无符号数用。这样子会造成极大的资源浪费。

但是如果我们使用补码,就可以让硬件无脑的计算再截断好了,反正最后的值不论是 有符号 还是 无符号, 都能得到正确的答案

由于讲这个的太多了,这里就简单说一下(不写反码了,直接用补码举例)。

用整数 1 来做个实验,

1 的原码是 0001,补码是 0001。

-1的原码是1001,补码是 1111。

如果你让 1 和 -1 的原码相加,那么他们很明显不得 0, 但是补码相加溢出再截断,最后等于0 。

至于为什么会这样?因为补码的定义就是这样啊

用我自己的话总结:补码就等于现有的位再加一位,新加的位等于1,其余都为0 。减去当前的原码,就成了补码。

用例子来说就是 10000 (总共5位) 减去 1 的原码 0001, 就等于 1 的补码 1111 。
10000 - 00001 = 1111

用 -1 举例 , -1 的补码 1111
这四位不是对应着 8 4 2 1 嘛,那么直接把 最高位 的值 乘以 -1, 其他位都是正值,加起来就行了。

-8*1 + 4*1 + 2*1 + 1*1 = -1

比如 -3, -3 的补码 1101

-8*1 + 4*1 + 2*0 + 1*1 = -3

热心网友 时间:2023-10-12 00:23

在计算机中,负数,以其正值的补码形式表示。

就是说,负数,是用一个正数(即补码)来表示的。

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

同时,也就消除了减法运算。

那么,计算机,只需配置一个加法器,便可横行天下。

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

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

补码(一个正数),怎么就能【代表负数】呢?

其根源在于“计数系统的周期性”。

你看,两位十进制(0~99),计数周期就是 10^2 = 100。

那么将有:

   24 - 1 = 23

   24 + 99 = (一百) 23

你只要保持两位数,忽略进位,+99 就能代表-1。

同时,减法,也就用加法运算实现了。

算法公式:代替负数的正数 = 负数 + 周期。

这个公式,也可在计算机中应用。

在一个字节中,是 8 位 2 进制,周期就是 2^8 = 256。

那么,计算公式就是:正数 = 负数 + 256。

-1 就可用 255 = 1111 1111 (二进制) 代替。 

-2 可用 254 = 1111 1110 代替。

。。。

这些“替代品”,就是补码。

只有负数,才需要转换成正数。

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

所以,正数,并没有补码。


声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
酒驾缓刑节保证书怎么写 合同法律咨询免费 这款充电宝可以带上飞机吗? 倪俊卿成就及荣誉 江苏种牛站有几家? 山东宏正牧业有限公司服务承诺 吃早餐后抽血会影响体检结果吗 电脑如何设置护眼模式(台式电脑如何设置护眼模式) 电脑显示器设置护眼电脑屏幕怎么设置比较护眼 广告机是否支持分屏显示功能? 赤壁杜牧的全诗 求攻略那朵黑莲真千金百度网盘资源,求求了!!! 女主重生她奶奶是*家的佣人,她被奶奶带到了*家,*家有一个千金是晋江小说 《真千金她是玄门大佬》讲了什么 炮灰真千金她觉醒了 考驾照的年龄最小是多少岁 煽情的说说句子 煽情的说说有哪些 梦见楼上漏水被淹的预兆 梦见洗澡衣服掉进粪坑又捞出来的预兆 还下欠1万什么意思 下欠金额是谁差谁的钱 下欠是什么意思 女人快手名字简单气质 牵动的引证解释 识微见远指什么动物 尾欠什么意思 请问“牵缠”是什么意思? 出入会轩辕凡事必缠牵啥意思 挂牵,仿佛,格外,兴奋近义词 帮忙找下列的近义词。挂牵、疲倦、盛开 梦见好多花卉的预兆 巫师3卢文伯爵的宝藏完美结局怎么达成? 代垫运杂费的会计分录 判决书中尚欠两字怎么解释, 张三还欠款五千七百元整,这句话有两种截然不同的解释,理解是什么 网易严选退出双十一,是为了反对过度消费吗? 关于名胜古迹的作文六年级600字 唐朝李孝常生平? 朵唯d990手机怎样截图 朵唯手机型号D330怎么截图 朵唯v8手机怎么截图 欠资待领的信是什么意思 信封上贴了一个80分的中国邮政邮票,被退回,然后有个黑印在邮票上左下角有一个欠资戳。欠资戳在哪里 水仙花数是什么 百度的看不懂 详细点 谢谢了 微信登录提示操作过于繁忙怎么办 出花园鸡碗怎样切最好看 贵州最值得去的3个地方 贵州最值得去的3个地方介绍 真多麻珍珠生长环境 中草药名方:珍珠天麻丸的功效与作用 绥化住户用电信息去哪里修改