不用加减乘除做加法

模拟计算机的加法器实现

  • x存放不进位的加法结果,y存放进位。不进位的结果加上进位就是答案,换句话就是x+y
    • 不进位加法结果可以通过异或实现,两数相加的进位可以通过逻辑与,再左移一位实现
  • 计算x+y,又是重复上面的步骤,循环即可,直到进位为0,循环结束
class Solution {
public:
    int add(int a, int b){
        //ab存放两个加数
        while(b)//直到进位为0为止
        {
            int x=a^b;//完成不考虑进位的加法
            int y=(a&b)<<1;//计算当前进位
            a=x;
            b=y;
        }
        return a;
    }
};
posted @ 2023-05-19 14:40  穿过雾的阴霾  阅读(21)  评论(0)    收藏  举报