集优教育网

反码和补码的作用在讲原码的时候,我们留下了一个问题

简介: 反码和补码的作用在讲原码的时候,我们留下了一个问题,就是绝对值相等的两个正数和负数之和本该是0,可是8和-8直接使用原码相加的结果转化为十进制的结果竟然是-16。

上一篇我们学习了二进制原码的知识,本篇我们继续学习二进制的另外两种表现形式反码和补码。

什么是反码反码和原码一样也是计算机中一种表示二进制的方法。

正数的反码等于他的原码,负数的反码是原码的符号位不变,其余数值位取反,即1变为0,0变为1。

由于0的原码有两种表示方式,0的反码是符号位不变,其余数值位取反,所以0的反码也有两种表示方式。

在8位机器中,0的反码表示为:0000 0000 和1000 0000。

什么是补码补码和原码、反码一样也是计算机中一种表示二进制的方法。

正数的补码等于他的原码,负数的补码等于他的反码加1,0的补码是唯一的即0000 0000。

上面有讲到0的反码有两种表示方式0000 0000 和1000 0000,为什么补码不是两种呢。

由于正数的补码等于原码,负数的补码等于反码加1,+0的原码和补码都是0000 0000,-0的原码是1000 0000,反码是1111 1111,补码是反码加1即1 0000 0000,这个数已经超出8位机器的存储范围了,最高位没法存储,最高位被舍弃,即结果也是0000 0000。

所以补码也正好解决了0的原码、反码不唯一的问题。

绝对值相等的正数和负数的反码的结果相加和为多少在之前的原码学习中我们知道,正数的原码和负数的原码除了符号位为0和1以外,其余的数值位都是一样的,而正数的反码是他的原码,负数的反码是他的原码的符号位不变,数值位取反。

所以负数的原码和反码相加后所有数位的结果都是1。

比如:8的原码:0000 10008的反码:0000 1000-8的原码:1000 1000-8的反码:1111 0111显然8和-8的反码相加结果为1111 1111,即所有数位的结果都是1。

计算机也可以看成一个计量机器,因为计算机的字长是定长的,即存储和处理的位数是有限的,因此它也有一个计量范围,即都存在一个“模”。

如:时钟的计量范围是0~11,模=12。

反码和补码的作用在讲原码的时候,我们留下了一个问题,就是绝对值相等的两个正数和负数之和本该是0,可是8和-8直接使用原码相加的结果转化为十进制的结果竟然是-16。

对于8位机器来说,绝对值相等的正数和负数的反码相加结果是1111 1111,如果再加1,那么逢二进一,机器数就会溢出,这个刚好溢出的数,我们就称作这个机器的模,即8位机器的模为2的8次幂。

这个数的最高位会溢出,溢出后的数即0000 0000,转换为十进制就是0。

而正数的原码、反码和补码都等于原码,所以绝对值相等的两个正数和负数的反码之和再加1的结果是机器的模,所以科学家们就把负数的反码加1叫做负数的补码。

这样绝对值相等的正数和负数的补码相加的结果就是模,溢出最高位,转化为十进制就是0,这也就解决了“8”和“-8”原码相加不等于0的问题。

所以反码起到了一个求补码的过渡的作用也叫过渡码,补码才是计算机真正用来参与运算的。

也就是说因为地球是一个圆形,所以向东走能到达的地方,我们向西走也一样可以到达这个地方。

上面我们说过,绝对值相等的正数和负数的补码相加的结果就是模。

比如这一圈是2的8次幂,作加法理解为向东走,作减法理解为向反方向即向西走。

那么8 - 2 = 6,即东8的基础上向西走2到回到东6的位置。

也就是,即如果向西一直走的话要走2的8次幂-2。

所以,a - b (a、b为二进制正数)就等于a + (模-b),模-b的结果就是b的负数的补数。

所以二进制的减法,也可以用补数来表示。


以上是文章"

反码和补码的作用在讲原码的时候,我们留下了一个问题

"的内容,欢迎阅读集优教育网的其它文章