371. Sum of Two Integers, 不用加减乘除运算符计算两数之和

原创 2017年09月05日 16:19:33

rt.

思考:在计算5 + 9时,首先不进位的话 5 + 9 = 45 + 9的进位为1,然后和就是1 * 10 + 4 = 14。同理放到二进制中也可以采用这样的方法。

代码如下;

class Solution {
public:
    int getSum(int a, int b) {
        return bitAdd(a, b);
    }
    
    int bitAdd(int a, int b) {  
        int nCarry = a & b;      // 进位  
        int nSumNoCarry = a ^ b; // 非进位  
        if (nCarry != 0)  
            return BitAdd(nSumNoCarry, nCarry << 1);  
        else  
            return nSumNoCarry;  
    }  
};

若要计算a = b * 3,可将a = b << 1 + b,然后运用上述bitAdd()函数即可。


版权声明:本文为博主原创文章,未经博主允许不得转载。

两个常见位操作面试题 不用加减乘除运算符计算两数之和及a=b*3

《两个常见位操作面试题不用加减乘除运算符计算两数之和及a=b*3》地址:http://blog.csdn.net/morewindows/article/details/8710737转载请标明出处,...

【leetcode74】Sum of Two Integers(不用+,-求两数之和)

题目描述:不用+,-求两个数的和原文描述:Calculate the sum of two integers a and b, but you are not allowed to use the o...

【计算两数之和】不使用加减乘除

计算两数之和不论在计算机中还是生活中,都不算难(即使某些数据过大)。但是如何能更高效的计算时一个难题,或者说在计算机内部是如何解析两个数之间的加法的,这就成了一个可以探讨的问题。   当然我们很了解...

LeetCode 371.Sum of Two Integers 位运算实现加法(减法)

1.原题Calculate the sum of two integers a and b, but you are not allowed to use the operator + and -.(...

LeetCode笔记:371. Sum of Two Integers

不使用加号减号达到计算两个整数之和的目的

LeetCode#371. Sum of Two Integers(位运算)

位运算计算两个整数的和 位运算面试题

LeetCode之路:371. Sum of Two Integers

LeetCode之路:371. Sum of Two Integers 一、引言这道题非常小巧,题干非常简洁: Calculate the sum of two integers a and b,...

LeetCode 371: Sum of Two Integers 题解

原题如下:LeetCode 371: Sum of Two Integers Problem: Calculate the sum of two integers a and b, but y...
  • Artprog
  • Artprog
  • 2016年08月17日 11:48
  • 422

[leetcode]--371. Sum of Two Integers

Question 371: Calculate the sum of two integers a and b, but you are not allowed to use the operat...

371. Sum of Two Integers(C++)

题目:不用加减乘除法实现加法运算如果不能用加减乘除运算,那还能有什么运算方法呢?当然了,还有亲切的位运算。解题思路: 和平时做加减法一样,先各个位相加,然后得到的数再相加,注意:期间要考虑进位情况...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:371. Sum of Two Integers, 不用加减乘除运算符计算两数之和
举报原因:
原因补充:

(最多只允许输入30个字)