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

不用加减乘除做加法

题目描述

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

思路

  1. 我们可以考虑使用二进制的位运算
  2. 先异或(不进位),再做位与运算,等到要进位的位,左移一位得出进位,再进行一次加法的流程循环下来,直到不产生进位为止

代码

public class Solution {
    public int Add(int num1,int num2) {
        int temp01 = 0;
        int temp02 = 0;
		do {
			temp01 = num1 ^ num2;
			temp02 = (num1 & num2) << 1; // 代表进位
			num1 = temp01;
			num2 = temp02;
		} while (temp02 != 0); // 没有进位
		return temp01;
    }
}
posted @ 2016-07-16 15:58  RosenDing  阅读(138)  评论(0编辑  收藏  举报