先来理解模:
模是至一个计量器系统的计数范围。
比如说:时钟可以看做是一个计量器,它的计量范围是 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
浙公网安备 33010602011771号