您的位置:首页 > 职场人生

【面试题47】不用加减乘除做加法

2016-09-01 19:45 295 查看


题目描述

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

/**
* 例:14+7
1 1 1 0
+ 0 1 1 1
------------------------------------------------------
①不计进位相加(即异或运算): 1 0 0 1

②考虑进位(因为有进位的时候都是1,
所以结果为1代表该位运算有进位,与运算: 0 1 1 0
之后要左移一位):

③两个值相加
*/

public class Solution {
public int Add(int num1,int num2) {
int sum=0;
int carry=0;
//表示没有进位;因为第①②步相加的时候依然可能产生进位
while(num2!=0){
sum =num1 ^ num2;
carry=(num1 & num2)<<1;

num1=sum;
num2=carry;
}
return num1;
}
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: