剑指offer 48.发散思维能力 不用加减乘除做加法

题目描述

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

解题思路

  1. 两个数异或:相当于每一位相加,而不考虑进位;
  2. 两个数相与,并左移一位:相当于求得进位;
  3. 将上述两步的结果相加

代码如下

 

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

 

 

 

posted @ 2019-08-21 10:09  Transkai  阅读(166)  评论(0编辑  收藏  举报