面試題65:不用加減乘除做加法
一、題目描述
寫一個函數,求兩個整數之和,要求在函數體內不得使用+、-、×、÷四則運算符號。
二、問題分析
我們之前詳細探討了位運算 劍指Offer對答如流系列 - 二進制中 1 的個數,已經非常非常詳細了。
這道題僅僅是讓做加法,我們除此之外還是做了乘除與減法。
記不清的朋友可以回頭看看。
這裏象徵性地做一次解答吧
三、問題解答
public int add(int num1,int num2) {
while(num2!=0){
int sum=num1^num2;
int carry=(num1&num2)<<1;
num1=sum;
num2=carry;
}
return num1;
}