补码的理解

计算机中可以同时有加法器和减法器,但是为了简化逻辑算术单元设计,计算机里只需要加法器,可以不需要减法器。为什么?

因为加法和减法运算都可以通过加法器运算。那减法运算如何通过加法器计算呢?

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

原文地址:https://www.cnblogs.com/thebreakofdawn/p/9564285.html