计算机中,为什么负整数用补码表示而不直接用原码,例

 我来答
狄文静库雅
游戏玩家

2019-12-18 · 游戏我都懂点儿,问我就对了
知道大有可为答主
回答量:9823
采纳率:31%
帮助的人:686万
展开全部
因为一个字节是八位的。我们总是利用最高位表示符号位,正数的补码是本身
举个例子,若正数0111,1111
按照你的意思,直接加1
不就变成10111,1111了嘛
还有,补码表示负数是因为计算机中的加减运算,对负数都是通过补码来运算的,通过补码的加减,得到的补码再反过来求出对应的负数,计算机中的计算只有0和1
不可能在数字前加正负号,所以负数必须用补码
沙里波特
2024-11-30 · TA获得超过5251个赞
知道大有可为答主
回答量:1.1万
采纳率:95%
帮助的人:639万
展开全部

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

那么,什么是“补码”呢? 用“补码”表示正负数,目的何在呢?

还是先看看十进制数吧,看两位数就行: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)进行计算。

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

计算机专业教材上有这个补码定义式:[ X ]补 = 2^n + X。

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

.

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

不能!

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

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

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

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

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

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

那么,“补码的最高位 1,就是一个负数”的原因在于:

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

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

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

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

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

由此可知,原码和反码,也都是胡乱的定义。

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

其实,所谓的“补码”,它也是正常的二进制数,它本来就是没有符号的数字。

虽然,它们是一组数据中较大的一半,但是,它们仍然是“数”,并非是“神马码”。

因此,利用“补码”当做正负数做加减计算,与“无符号数”的加法,算法是完全相同的!

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

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

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

所以,计算机中,不能使用原码和反码,甚至,都不保存它们。

“机器数原码反码补码正数三码相同负数取反加一符号位不变模符号位也参加运算时针倒拨正拨...”

这些都是垃圾!

你就是把它们都背熟了,也是啥用都没有的。

当然,你将来如果当上了计算机老师,你还可以拿这些去忽悠下一代学生。

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

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

所谓的补码,其实,就是一个“代替负数运算”的正数。

你可从十进制的计算来理解。

比如,限定使用两位十进制数(0~99)。

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

那么有:

   25 - 1 = 24

   25 + 99 = (一百)  24

舍弃进位,只取两位的结果,+99 就和-1 是等效的。

那么,99,就称为-1 的补数。

同理,98,就是-2 的补数。

。。。

计算公式:负数 X 的补数 = 周期 100 + 负数 X。

  如果是 n 位数,补数就是: 10^n + 负数 X。

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

计算机用二进制,补数,就称为“补码”了。

利用补码,就可以把加、减法,统一用加法来实现。

这样做,就能够简化硬件。

原码和反码,都不具备这样的功能。

所以,计算机中并不用原码和反码。

如果限定,使用 8 位 2 进制数,就是:

  0000 0000 ~ 1111 1111。

对应十进制,就是: 0 ~ 255。

共有 2^8 = 256 种组合。计数周期也就是 2^8。

此时,-1 的补码,就是 255 (1111 1111)。

同理,-2 的补码,就是 254 (1111 1110)。

。。。

计算公式:

 当 X < 0,则 [ X ]补 = 周期 2^8 + X。

一般化的形式是:

   [ X ]补 = 2^n + X, n 是位数。

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

求补码,并不需要“原码反码符号位取反加一”。

扯上那些乱七八糟的,你就不会理解“为什么用补码”。

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

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式