根据上面两个技巧,假设有 12+7:
根据分析,完成题解:
//JAVA class Solution { public int getSum(int a, int b){ while(b != 0){ int temp = a ^ b; b = (a & b) << 1; a = temp; } return a; } } 剑指 Offer 65. 不用加减乘除做加法写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。
示例:
输入: a = 1, b = 1 输出: 2 答案 //JAVA class Solution { public int add(int a, int b) { // 该位都为1,&,则进位 // 异或运算,^,非进位加 // 我们使用temp来记录进位的位数二进制 // 每次我们都将 非进位和 与 进位二进制 做非进位加法运算,直到没有进位为止(进位为0) while(b != 0) { // 当进位为 0 时跳出 int temp = (a & b) << 1; // temp = 进位 a ^= b; // a = 非进位和 b = temp; // b = 进位 } return a; } }