剑指offer刷题

不用加减乘除做加法

2019-05-29  本文已影响0人  侯俊同学

题目描述

写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。

思路

不能用加减乘除,只能用二进制中位运算。加法定义成如下:
定义一个函数,其功能是完成加法运算,输入两个数:

  1. sum = 按位异或运算
  2. carry = 按位与运算<<1,注意括号
  3. 执行sum与carry相加,但是无法使用+号,因此只能给递归调用自己。直到第二个参数为0.

题解

class Solution {
public:
    int Add(int num1, int num2)
    {
        int sum = 0,carry=0;
        do{
            sum = num1^num2;
            carry = (num1&num2)<<1;
            num1 = sum;
            num2 = carry;
        }while(num2!=0);
        return num1;
    }
};
上一篇下一篇

猜你喜欢

热点阅读