算法:计算两个整数之和

本文探讨了在不允许使用加法运算符的情况下,如何计算两个整数之和。通过分析加法的计算过程,提出了一种新的解决方案:利用位运算,通过异或操作得出不包含进位的和,再结合按位与和左移操作处理进位,将加法转换为位运算表达式(a^b) + (a&b)<<1,循环执行直到无进位为止。
摘要由CSDN通过智能技术生成
前言

乍一看这个标题,你可能会觉得奇怪:实现两个数之和有什么好说的,直接使用 a + b不就好了。确实我们一般都是这么做的,那么如果此时加个条件,不允许使用 “+” 运算符,那又该怎么做呢。

加法的计算过程

1.我们先来分析一下平时如何在演草纸上计算两个数字之和的。以159 + 357 为例
(1) 9 + 7 = 16,则和的个位为6,同时向十位进1
(2) 5 + 5 + 1 = 11,则和的十位为1,同时向百位进1
(3) 1+ 3 + 1 = 5,则和的百位为5,此时即可得出和为516

在计算过程中,我们直接将低位向高位进位的的数字用在了高位的加法中,如计算个位 9 + 7得到的进位1直接参与到了计算十位 5 + 5 + 1 的 过程中。

2.现在我们来改一下这个算过程
(1) 9 + 7 = 16,此时和的个位为6,需要向十位进1 * 10,我们把这个10放一边
(2) 5 + 5 = 10,此时和的十位为0,需要向百位进10 * 10 = 100,我们把这个100也放在一边
(3) 1 + 3 = 4,此时和的百位为4,目前和是406,现在把前面进位得到的10 和 100都加上得到516
在这种方式下,我们把低位向高位进位的数字,先放在一边,等所有高位计算完毕之后,再把这些需要进位的数字加上。最终得到了计算的结果。如果在加这些进位数字的时候又产生了进位,那么我们可以循环执

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值