2021-08-31 从原理上理解补码

想知道为什么有补码,首先我们来考虑一下计算机怎么计算减法。

我们知道,计算机中只有加法器,也就是说只能计算加法。那么如何计算减法呢?首先想到的是把减法 换成 负数加法,那么怎么表示负数呢?当然是表示成正数的相反数了。

以4位的运算器为例子:如果1表示为0001,那么 -1表示为1110就是理所当然的了,为了方便称呼,起了个名叫反码。表里可以清晰的看出其实-1就是1的按位取反。

十进制四位的二进制
10001
-11110

有了反码还不够嘛?不够的,因为存在这样的问题,0怎么处理?
如果把0当作正数,那么0表示为0000,-0就得表示为1111,这样0就有了两种表示方法,0不等于-0,显然是不合理的,那么怎么解决这个问题呢?

让1111的含义不再是-0,而是-1不就好了。原本-1表示为1110,现在我们希望-1表示为1111,就是在原来的基础上加了1。

0的问题解决了,但是这种改动也影响了所有负数的表示方法,因此对于负数,我们需要把他们加1。这也就形成了所谓“补码”的计算方法。

到此为止就结束了,理解了之后,就再也不用死记硬背那些转换规则了,你甚至可以脱口而出,-1的二进制为全1(16进制为:0xFFFFFF),因为-1取代了-0的位置。

希望本文可以帮助到你,欢迎批评指正。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值