先来理解模:

   模是至一个计量器系统的计数范围。

  比如说:时钟可以看做是一个计量器,它的计量范围是 0-11, 它的模为12。

  重点来了:

    1  模是不能在计量器中表现出来的。

      时钟只有0-11,12实际上是0, 也就是说模是计量器产生溢出的量。

    2  任何有模的计量器,都可以化减法为加法。

      时钟上从两点到四点,我们可以顺时针走两步,也可以逆时针走10步,在时钟这个模为12的系统里,+2和-10实际上是一样的。

在计算机中什么是补码?

  补码实际上就是为了让计算机更加方便的计算减法,让减法变为加法的一种计算规则。

  还是以上面的时钟为例,模为12, 如果我要计算 2 - 10,为了更加方便,我可以计算 2 + (-10的补码) 也就是 2 + 2 得出结果。

  所以笼统的说: 负数的补码等于  (模 + 这个数) % 模, 而正数计算其补码在计算机中没有意义(我是这样理解的)

  解释:上面的更加方便是怎么方便的呢?

     我们来用4位的补码数字来说明补码系统的数字表示方式,首位用来表示正负,余三位表示整数,也就是数值范围为 0 - 7, 模为8。

     假设我们要计算 3 - 1, 如果我们用3 + (-1的补码) 方式计算,也就是 3 + 7

    0 0 1 1  (3)
 +  1 1 1 1  (-1的补码也就是7)
 ------------
  1 0 0 1 0  (2)

    看,由于我们最大的位数是4, 也就是10010中的首位1已经溢出了,所以实际上我们获得的数是0010也就是2,我们使用加法电路就可以处理有负数的加法,不需另外处理减法的电路了。

另外,关于原码,反码,补码的历程可以看一下:

  https://www.zhihu.com/question/20159860

  http://www.cnblogs.com/zhangziqiu/archive/2011/03/30/ComputerCode.html

 

posted on 2017-12-13 21:02  MnCu  阅读(693)  评论(0)    收藏  举报