关于补码的思考

补码的一些思考

众所周知,计算机用二进制表示数据,现实生活中存在正数和负数,计算机面对二进制数无法识别正数和负数,便有了无符号数和有符号数。无符号数所有位均代表数据,而有符号数最高位用 “0” 代表正数,用 “1” 代表负数。当使用有符号数进行加减运算时,便产生了一些问题。

例:当两正数相加(原码计算)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


从上面的三个例子中可以看出,当使用原码对两符号位不同的数进行加减运算时,会出现错误,如果要想得到正确的答案,我们先要判断两数绝对值大小,然后将绝对值大的数减去绝对值较小的数,结果的符号以绝对值大的数为准,这么做复杂又费神,于是,引入了补码的概念

在介绍补码时,让我们先了解一下补数
补数,简而言之就是一个负数可以用它的正补数来代替,且它们的绝对值之和为模数,模数不同,负数的正补数也不同
例如:当模为12时,-5的补数就是7
9-5也就可以代替为9+7
在此基础上,我们再看补码的定义

在这里插入图片描述

x > 0时,其补码是其本身,而负数的补码 2^n+1 + x 中 2^n+1就是 “模”

例:(用补码计算)(负数快速求补码:该负数对应正数所有位取反加1)
在这里插入图片描述
在学习补码的过程中,我又产生了疑问,计算机可以将-2+1,1-2都看作加法,那么计算机是怎么计算1-(-2)的呢?

我从计算机进行加减法的步骤中找到了答案

在这里插入图片描述
计算机会先判断是加法还是减法,如果是减法,则先对减数求补,在进行加法运算
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值