您的位置:首页 > Web前端

剑指offer-47:不用加减乘除做加法

2017-04-18 10:41 405 查看

代码

public int Add(int num1,int num2) {

int sum = 0, carry = 0;
// 1. 使用异或运算表示各个位加和后的结果;
// 2. 根据计算结果发现,只有1,1进位,于是求与运算且左进一位;
// 3. 更新num1, num2,直到num2为0
// 4. 返回num1.
while(num2 != 0){
sum = num1 ^ num2;
carry = (num1 & num2)<<1;
num1 = sum;
num2 = carry;
}
return num1;
}


相关题目

不使用新的变量实现两个整数的交换

基于加减法

a = a + b
b = a - b;
a = a - b;


基于异或

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