剑指Offer 不用(+,-,*,/)实现两个数相加
不用加减乘除做加法
https://www.nowcoder.com/practice/59ac416b4b944300b617d4f7f111b215?tpId=13&tqId=11201&rp=3&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking
在计组中,半加器、全加器中:
两个二进制的相加结果是用一个异或门实现的;
两个二进制的进位结果是用一个与门来实现的。
public class Solution {
public int Add(int num1, int num2) {
int result, ans;
do {
result = num1 ^ num2; // 每一位相加
ans = (num1 & num2) << 1; // 进位
num1 = result;
num2 = ans;
} while (ans != 0);
return result;
}
查看4道真题和解析