java 给出两个整数a和b , 求他们的和。不用用运算符+

发布时间:2019-11-19 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了java 给出两个整数a和b , 求他们的和。不用用运算符+脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

分析

首先来理解一下十进制的加法
8884 + 146 = 9030
依据 不进位+进位这一思想进行详述
首先是不进位的结果是8920

哪几位需要进位呢? 0011 也就是个位和十位需要进位,个位、十位进位之后的值为110,而这个结果是需要加到上面的不进位的值,即8920+110 = 8030 同样这是没有进位的,但是在这次相加的过程中也有进位的考量,哪几位呢?即100,百位的位置需要进位,那就再左移即可,为1000,然后加上上面的不进位相加的和,最后结果是9030,最后再看一下,还需不需要进位呢?发现8030&1000=0(按着二进制的形式写的,便于理解),此时是没有再需要进位的了,即最后结果就是9030了。

下面推广到二进制,是同样的思路的。
来看一下13+7这两个数的求和过程
13的二进制表示为:1101
7的二进制表示为: 0111
先求不进位的两个数之和,1101^0111 = 1010 ,而哪几位需要进位呢?
可以用&运算符来确定,即1101 & 0111 = 0101,将此结果左移即是进位之后需要加在1010上面的值,这就有变成刚开始的状态了,两个数相加,先算不进位状态的和,然后再看哪几位需要进位,上面两种状态的值为 0000(不进位的结果) 1010(需要进位,待计算),后面的值再左移表示进位之后的结果为10100,
此时新的两个数是0000,10100,

@H_126_18@
PE="button" class="copyCode code-tool" data-toggle="tooltip" data-placement="top" data-clipboard-text="public class Solution{ /** * @param a: An integer * @param b: An integer * @return: The sum of a and b */ public int aplusb(int a, int b) { if (b==0) return a; return aplusb(a^b, (a&b)<<1); } } " title="" data-original-title="复制">
public class Solution{     /**      * @param a: An integer      * @param b: An integer      * @return: The sum of a and b       */     public int aplusb(int a, int b) {         if (b==0)              return a;         return aplusb(a^b, (a&b)<<1);     } } 

脚本宝典总结

以上是脚本宝典为你收集整理的java 给出两个整数a和b , 求他们的和。不用用运算符+全部内容,希望文章能够帮你解决java 给出两个整数a和b , 求他们的和。不用用运算符+所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。