使用位运算求正数的相反数

对于负数而言,求相反数就是求其绝对值,上篇博客已经给出了用位运算求绝对值的方法。这篇博客给出用位运算求正数的相反数的方法。我们知道,对于用源码表示的数中,如果一个正数和一个负数除符号位不同,其他位均相同的话,那么他们互为相反数。从这个规则可知,如果我们将一个正数的符号位取反,那么将得到这个数用原码表示的相反数。同时,我们知道计算机里面的数是用补码形式存储的,而且负数的补码是原码除符号位外其余位取反加1,那么我们可以通过将一个正数的所有位取反然后加1的方式得到它的相反数。代码如下所示:

int get_reverse_for_positive_number(int num) {
    return ~num + 1;
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值