补码

来自计算思维百科
跳转至: 导航搜索

计算机表示正数是非常容易的,但是表示负数就比较麻烦,主要是这个负号如何表示呢?于是,人们就发明了补码来表示负数。补码是计算机中的符号数的三种表示方法之一。

基本概念

我们知道正整数直接用二进制表示,其中最高一位作为符号位,用0表示是正数,这种表示就是正整数的原码表示。而正数在补码的表示中和原码是一样的,没有区别。 如果我们要表示负数,就将其对应正数二进制表示所有位取反(包括符号位,0变1,1变0)后加1,这样得到的就是负数的补码。 在计算机系统中,数值一律用补码来表示和存储。这样做的目的在于,补码可以把加法和减法统一处理,这样处理运算就简单了。此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。

应用范围

补码在很多实际问题中都能用到,例如,假设当前时针指向10点,而准确时间是6点,调整时间可有以下两种拨法:一种是倒拨4小时,即:10-4=6;另一种是顺拨8小时:10+8=12+6=6,我们就可以利用8作为-4的补码,在模为12的前提下(时钟最大计时是12),加8和减4的运算结果是一致的。这个例子就可以看出,加法和减法是被统一起来了。

使用方法及步骤

我们举一个例子来看一下补码如何使用。假设我们做4位的二进制运算,那么最大可以表示的数范围是0-15,也就是模是2^4=16。这里的模就是最大计数范围的意思,这个例子中最多可以表示16个数,所以模是16。 现在我们要做一个减法8-2=6,其中8是正数,补码表示是1000,-2是负数,先把-2去反,得到+2,+2的补码是0010,然后各位去反,得到1101+1=1110,1110就是-2的补码。把两个补码加起来,1000+1110=10110,注意那个最高位的1超过了4位,此时模的作用就出来了,我们把最高的1扔掉(这就是取模操作),剩下的110就是结果6。 这个例子就可以看出减法是如何变成加法来实现的,这里补码就起了很关键的作用。

应用案例

应用1-时钟调整

案例:

小明刚买回来一台时钟,现在时间是5点,现在需要将时针从10点调整到5点。

解决方法:

时钟是逢12进位,12点也可看作0点。

一种方法是时针逆时针方向拨5格,相当于做减法:10-5=5

另一种方法是时针顺时针方向拨7格,相当于做加法:10+7=12+5=5

这是由于时钟以12 为模,在这个前提下,当和超过12时,可将12舍去。于是,减5相当于加7。同理,减4可表示成加8,减3可表示成加9。

应用2-数学上的同余概念

案例:

可以体现的计算思维

补码这一概念体现了计算思维的转化思想,把减法运算转换为加法运算来处理,不需要单独为减法设计电路,方便了使用。