关于原码、反码和补码的介绍
原码、反码和补码的概念
参考
找出负数的补码、以及负数的补码表示的负数的两种方法
数的补码的常见问题是找一个数的补码,以及根据补码找出它表示的数。
由于正数的补码和原码、反码都是一样的,在十进制和二进制之间转换就可以解决上述两个问题。
难点在负数上面。一个负数的补码是什么,以及一个表示负数的补码到底表示的是哪个负数。
还好,有两种方法可以同时解决这两个问题。
为了演示这两种方法,我们先给出用4个比特进行补码编码的样本:
方法1.
找出负数的补码
先找出作为它相反数的正数的补码,得到正数补码后,从低位向高位搜寻第一个1,第一个1和前面的低位比特(都是0)不变,而1后面的所有更高位比特取反(0变成1,1变成0),就得到原负数的补码了。比如,找-4的补码,先找4的补码,为0100,从低位向高位找1,为100,不变,后面的更高位取反,得到1100,它就是-4的补码。
根据补码确定它表示哪个负数
由负数的补码判定它表示哪个负数的过程和上述过程类似,从低位向高位搜寻第一个1,第一个1和前面的低位比特(都是0)不变,而1后面的高位比特取反(0变成1,1变成0),会得到一个正数的补码。那么原先的补码表示的负数就是这个正数的相反数。比如,补码为1100,显然最高位为1,是负数的补码,从低位向高位找1,为100,不变,后面的更高位取反,得到0100,是4的补码,于是1100就是-4的补码。
方法2.
找出负数的补码
先找出作为它相反数的正数的补码,得到正数补码后,对他进行取反,得到的二进制数再加1,即为该负数的补码。比如,找-4的补码,先找4的补码,为0100,取反,得到1011,再加1,得到1100,即为-4的补码。
根据补码确定它表示哪个负数
由负数的补码判定它表示哪个负数的过程与上述过程类似,把表示负数的补码取反,加1,得到正数的补码,那么原先的补码表示的负数就是这个正数的相反数。
