计组:已知原码求补码

原理:

取补码的游戏规则:取反加一

取反之后,若末位为0【即原码末位为1】:

末位0变1,前面所有位保持反码数据状态不变

也就是说,若原码末位为1,执行操作:
末位不变,前面所有位取反 

取反之后,若末位为1【即原码末位为0】:

末位1变0,向前进位

进入循环:

若前一位为0:

0变1,结束循环

若前一位为1,一样的:

1变0,向前进位,继续向前循环

直到出现(找到)“前一位为0”的情况为止


若原码末位为0,执行操作:

一直向前寻找,直到找到最末一位“1”(最末一位“1”代表着:这一位1后面的数字,全都为0)

保持最末一位“1”及其后面的数字不变

解释:

100...000取反加一

=>011...111加一

=>100...000

前面数字全部取反(保持反码的取反状态不变)


综上所述:

收纳上述总结论如下:

Case 1:

若原码末位为1,执行操作:

末位不变,前面所有位取反 

Case 2:

若原码末位为0,执行操作:

一直向前寻找,直到找到最末一位“1”

保持最末一位“1”及其后面的数字不变

前面所有位取反 (保持反码的取反状态不变)

 而实际上,根据我们的想法验证,Case 1即特殊的Case 2的情况,如此而已


最后,还有一点需要注意的是:

无论是我们在使用上述简便办法还是老老实实办法(取反加一)求补码的时候

执行的“取反”的操作针对的对象范围,仅限于(局限于)数值剩余剩下的数值位

不包含符号位!!!!

唯一需要将所有位(包括数值位和符号位)全部都取反的情况为:

将减数转化为加数

即:

已知 [ B ] 的补码,求 [ -B ] 的补码

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值