题解 | #不用加减乘除做加法#
不用加减乘除做加法
http://www.nowcoder.com/practice/59ac416b4b944300b617d4f7f111b215
public class Solution {
public int Add(int num1,int num2) {
// 思路:位运算
// 1、两个数异或,相当于每一位相加,而不考虑进位
// 2、两个数相与,并左移一位:相当于求得进位
// 3、将上述两步的结果相加。
// 4、循环结束条件时,当进位为0的时候,证明它们相异或的就是要的结果
// 难点在于,大多数人想到不到循环结束条件是什么
// 参考评论区一位大佬的
while(num2 != 0){
int sum = num1 ^ num2;
int carry = (num1 & num2) << 1;
num1 = sum;
num2 = carry;
}
return num1;
}
}
基恩士成长空间 426人发布
