原码 补码 反码 之间有什么关系

 我来答
伊彩缘17
2022-01-27 · TA获得超过4839个赞
知道大有可为答主
回答量:4301
采纳率:100%
帮助的人:207万
展开全部

在计算机内部的1、0,并不是真正的数字,而是“机器码”。

它们是按照“补码”的规则,代表我们所说的数字。

在计算机中,并没有原码和反码,原码和反码,只能写在纸面上。

计算机中的补码,和纸面上的原码反码,没有任何关系。

================

计算机处理“机器码”的位数,是固定的,如8位机、16位机。。。

下面说明“补码”的构成。

数字 0,在八位机中,就是:0000 0000。

+1,就按二进制加上 1,即:0000 0001。

其他,依次递增即可。

最后的是+127,就加到了:0111 1111。

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

负数,依次递减,就行了。(注意,只取八位。)

-1,就是 0000 0000-1,按照二进制相减,

 保留八位,即为:1111 1111=255(十进制)。

-2,就再减一,得:1111 1110=254。

其他,依次递减即可。

最后的是-128,即:1000 0000=128。

负数的计算公式:256 + 负数。

(其中的 256,是 2 的 8 次方。)

================

利用补码计算: 59-31 = 28。

计算机中,只有加法器,没有减法器。

必须用补码代替负数,用加法运算如下:

    59 的补码=0011 1011

   -31 的补码=1110 0001

-相加-------------

 得:    (1)    0001 1100 = 28 的补码

保留八位结果,这就实现了减法运算。

================

借助于补码,计算机,就可以省去减法器。

因为补码的这个特性,所以,在计算机中,只是使用补码存放数据。

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

================

注意:

 如果运算结果超出了-128~+127 的范围,结果将是错的。

 这种现象称为“溢出”。

 再注意一下:进位,并不等于溢出。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式