剑指offer — 不用加减乘除做加法

来源:互联网 发布:互联网电视什么软件 编辑:程序博客网 时间:2024/05/15 07:49

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

解题思路:使用位运算的方式进行处理,其中一位进位,另外一位是非进位的结果

sum =   a ^ b ---> 表示非进位

carry = (a & b) << 1表中进位

java

public class Solution {    public int Add(int num1,int num2) {        int sum = 0, carry = 0;        if (num2 == 0) {            return num1;        }        while (num2 != 0) {            sum = num1 ^ num2;            carry = (num1 & num2) << 1;            num1 = sum;            num2 = carry;        }        return sum;    }}