为什么使用补码(complement number)?

本文解释了计算机中使用补码表示负数的原因。通过补码,可以统一加法和减法运算,例如(-5)+(5)能正确得出0。文章还详细介绍了补码的计算方法及其在实际运算中的应用。

我们在学计算机基础时就讲到了,在计算机中负数是用补码表示的,但为什么呢?即使做了6年程序员,我仍然不知道,直到我看了《哈佛大学公开课:计算机科学cs50》。通俗点讲来,使用补码是因为:

计算机中统一加法和减法,使得类似于(-5)+(5)最终可以得到0。

比如我们用8bit来表示数字,那么(-5)和(+5)分别表示为:

0000,0101

1111,1011

我们采用计算机中加法的方式就可以得到(1,0000,0000),这里我们使用8bit来表示数字所以最高位的1被丢弃,所以就得到0。

 

我们再看看补码是怎么得到的,(-5)的补码就是(+5)的反码加1得到的。这也是一个反向过程,即:取反可以得到形如(1111,1111)的表示,那么再加1的话,正好可以得到(0000,0000)的表示(丢弃了最高位)。为了加深印象我们看看看(+5)+(-2),它们的二进制表示分别为:

0000,0101 =>(+5)

1111,1110 =>(-2)

我们二进制加法的结果自然就是:(1,0000,0011),最高位的1被丢弃,那么结果正好就是3的二进制表示。

转载于:https://www.cnblogs.com/Jerry-Chou/archive/2012/03/13/2393256.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值