求补码的简便算法

本文介绍了计算机中求负数补码的一种简便算法——值位取反加一,并提供了算法正确性的数学证明,强调理解补码本质的重要性,以提高计算效率。
摘要由CSDN通过智能技术生成

对计算机来说,「对负数求最小正同余数(模为值位的容量)放入值位,符号位置为1」1 这样的求补码过程还是有些繁琐,同时这是一个非常基础的运算过程,一点点优化都能对计算机的计算效率有很大提升。

于是就有大牛把这个过程优化成「值位取反加一算法」2原码的符号位不变,其余值位取反,最后加1,得到负数的补码。

这个算法在计算上变得非常便捷,极大地提高了计算效率。其实我们也可以在理解补码本质的基础上使用这个优化算法来计算补码,但最好不要只记这个而不去理解本质,因为虽然看起来简单,但是你确定一段时间不用后你还能记起它来?或者是自己能推导出来?

简便算法正确性的证明

为什么能这么优化呢?最小正同余数 = 值位取反加一,看上去是不是很神奇,下面证明一下

  1. 用3位二进制值位[abc]表示一个不会造成溢出的负数F:
    F=(a22+b21+c)(a,b,c0,1)
  • 10
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值