计算机是如何处理加减法的

​ 所有程序最后都会变成一串0和1的二进制机器数,第一位位作为符号位,0代表正数,1代表负数。计算机并不能识别进位,那它是如何处理加减法的呢。这就涉及到计算机的原码、反码和补码了。

一、原码、反码、补码的概念

1、原码

原码是最容易理解被记住的表示,就是第一位为符号位,其余位为真值

例:

[+1]原 = 00000001

[-1]原 = 10000001

2、反码

正数的反码就是其原码,负数的反码就是在原码的基础上符号位不变,其余位取反

例:

[+1]反 = 00000001

[-1]反 = 11111110

3、补码

正数的补码就是其本身,负数的补码就是在反码的基础上+1

例:

[+1]补 = 00000001

[-1]反 = 11111111

二、计算方法

计算机在计算时如果用原码计算:1+1好像没有问题

00000001[原]

+00000001[原]

=00000010[原]=2

但计算减法如1-1(即1+(-1))得到的结果却为-2,显然不合理

00000001[原]

+10000001[原]

=10000010[原]=-2

于是就出现了反码解决了减法问题,如1-2即1+(-2)

00000001[反]

+11111101[反]

=11111110[反]=10000001[原]=-1

但是反码表示也有不合理的地方,例如当结果为0的时候:1-1

00000001[反]

+11111110[反]

=11111111[反]=10000000[原]=-0

这时候就会出现+0和-0两种0的表示,为了解决这一尴尬就又出现了补码例:1-1结果为0就只有一种表示

00000001[补]

+11111111[补]

=00000000[补]=00000000[原]=0

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值