什么是二进制补码(X和Y均为补码表示的二进制)

补码作用:可以把减法按加法来处理;同时,还可以将符号位和其它位统一处理。正数的补码与原码相同;负数的补码是其反码加1。我们以8位二进制为例,计算5-2 = 3,

什么是二进制补码(X和Y均为补码表示的二进制)插图

补码作用:可以把减法按加法来处理;同时,还可以将符号位和其它位统一处理。正数的补码与原码相同;负数的补码是其反码加1。

我们以8位二进制为例,计算5-2 = 3,用二进制表示为:

0000101(原)+1000010(原)

= 00000101(原)+1111101(反)

= 00000101(原)+1111110(补)

=00000011

补码计算方法是在其原码的基础上, 符号位不变, 其余各位取反再加一,那么补码为什么要这么算,其中的原理是什么呢?

1.为什么要反过来加一个?

仍然以上面的8位二进制数为例,取模为10000000,即2 ^ 8 = 256,十进制数2的8位二进制数为0000010,取反得到11111101。加在一起:0000010(原)+1111101(逆)= 111101。

从上面可以看出,二进制数的原码加上求逆后得到的值加一正好得到模。已知原码+补码=模,所以可以得出补码等于原码的倒数加一,这是计算补码最简单的方法。在这个过程中,逆码没有实际意义,它只是计算机计算补码时的一个中间量。

2.为什么符号位可以参与运算,与其他位统一处理?

在计算机中,正数和负数以不同的方式存储。我们可以通过观察第一个数字是0还是1来知道一个二进制数是正数还是负数。如果它的第一位是0,它就是正原码,如果它的第一位是1,它就是负补码。这里的符号位其实是计算出来的,所以可以参与运算。

我们还是以8位二进制为例,计算2-5 =-3,用二进制表示为:

0000010(原)+10000101(原)

= 00000010(原)+1111010(反)

= 00000010(原)+1111011(补)

=11111101

计算结果11111101的第一位是1,所以这个值是负数的补码,原码= (00000010)逆+1 = 0000011 =小数3。因此,11111101代表负数3。在运算的过程中,我们只用简单的加法来计算,结果是1111。符号是计算出来的,因为在计算过程中,有一个规则,第一个数字是0,为正,第一个数字是1,为负,所以我们决定第一个数字就是符号,也就是先有规则后有规则。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。

作者:美站资讯,如若转载,请注明出处:https://www.meizw.com/n/250825.html

发表回复

登录后才能评论