补码的理解
计算机中可以同时有加法器和减法器,但是为了简化逻辑算术单元设计,计算机里只需要加法器,可以不需要减法器。为什么?
因为加法和减法运算都可以通过加法器运算。那减法运算如何通过加法器计算呢?
1、模的概念:
在日常生活中,将某物体顺时针旋转270度和逆时针旋转90度能达到同样的效果,把时钟里的分钟顺时针调整40分钟和逆时针调整20分钟,分针最后的位置是一样的。这时270是90的补数,90也是270的补数;40和20也同理。这里提到角度270+90=360,360就是模;60分钟:40+20=60,60就是模。
在二进制数中,当位数为n时,模为。
2、补码定义:
非负数的补码是其原码本身;
负数的补码是其绝对值的原码最高位符号位不变,其它位取反,再加1。(为什么补码定义是这样的?下面有解释!)
负数的补码定义为什么是上面的定义呢?
举例子:
求7-3转化为求7+(13-16)
7+(13-16)是什么意思呢?按照补码定义发现13是-3的补码,-16是加法器在计算7+13时候得到10100后去掉最高位1得到0100,为什么要去掉最高位16呢?因为上面模的定义:二进制数n=4,只看低4位二进制数!
总结规律发现,模是固定的16(n=4,模为16),13就是-3的绝对值原码取反加1,推而广之也是正确的,就有了负数的补码的定义(如此定义原因可能也是便于记忆求解)!
参考:https://blog.csdn.net/qq_33391629/article/details/79738814