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

来源:互联网 发布:sqlserver查询语句 编辑:程序博客网 时间:2024/05/29 19:50

代码

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 + bb = a - b;a = a - b;

基于异或

a = a ^ b;b = a ^ b;a = a ^ b;
0 0