当前位置:   article > 正文

刷题记录(Sum of Two Integers Solution)_sum of two integers solution

sum of two integers solution

Leecode:Sum of Two Integers Solution(JS解答)

在这里插入图片描述
思路:先从10进制的运算开始理解, 7 + 8,首先计算不考虑进位的相加,结果为5,第二步只计算进位部分,为1向左偏移一位,1>>1即10,注意,如果第二步计算出来等于0,那意味着没有进位情况,第一步所求的结果就是结果值,但是,当第二步求出的结果不为0的时候,则需要继续运算,被运算的数即第一步和第二步求出的数,10+5,10+5第一步运算结果为15,第二步运算结果为0,即15就是所求结果。

二进制运算思路:
同样我们可以用三步走的方式计算二进制值相加: 5—101,7—111

第一步:相加各位的值,不算进位,得到010,二进制每位相加就相当于各位做异或操作,101^111。
第二步:计算进位值,得到1010,相当于各位进行与操作得到101,再向左移一位得到1010,(101&111)<<1。
第三步重复上述两步,各位相加 010^1010=1000,进位值为100=(010 & 1010)<<1。
继续重复上述两步:1000^100 = 1100,进位值为0,跳出循环,1100为最终结果。
结束条件:进位为0,即为最终的求和结果。

function getSum(a: number, b: number): number {
   var c:number;
   while (b != 0){
        c = (a&b);
        a = a^b;
        b= (c)<<1;
    }
    return a;
};
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/175632
推荐阅读
相关标签
  

闽ICP备14008679号