剑指Offer-不用加减乘除做加法

题目描述

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

解题思路—使用异或和与运算符:题目要求不能使用四则运算符号,但是要求和,肯定要使用别的运算符,这里要想到两个运算符:异或和与

两个数异或:相当于每一位相加,并不考虑进位。
两个数相与,并左移一位:相当于求得进位。

然后将进位与异或的结果相加,直至进位为0,即得求和结果。

Java解题—使用异或和与运算符

public class Solution {
    public int Add(int num1,int num2) {
        while(num2!=0){
            int sum = num1 ^ num2; // 每一位相加,不考虑进位
            num2 = (num1 & num2) << 1; // 计算进位
            num1 = sum;
        }
        return num1;
    }
}

你可能感兴趣的:(剑指Offer)