剑指offer—65.不用加减乘除做加法—分析及代码(Java)

剑指offer——65.不用加减乘除做加法——分析及代码[Java]

一、题目

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

二、分析及代码

1. 二进制运算

(1)思路

将两个整数转换为二进制处理,可以通过位运算取代所需的四则运算。具体步骤包括:
1)对各位上的数字进行异或处理,即直接相加,不考虑进位;
2)对各位上的数字进行与处理,即考虑进位;
3)将前两步得到的数字用上述方法继续相加,直至不产生进位。

(2)代码

public class Solution {
    
    
    public int Add(int num1,int num2) {
    
    
        int sum = num1 ^ num2;
        int carryBit = (num1 & num2) << 1;
        while (carryBit != 0) {
    
    
            int preSum = sum;
            sum = preSum ^ carryBit;
            carryBit = (preSum & carryBit) << 1;
        }
        return sum;
    }
}

(3)结果

运行时间:9 ms,占用内存:9376 k。

三、其他

暂无。

猜你喜欢

转载自blog.csdn.net/zml66666/article/details/112206523