zoukankan      html  css  js  c++  java
  • 【剑指offer】不用加减乘除做加法,C++实现

    原创博文,转载请注明出处!

    # 题目

    image

    # 思路

    第一步:不考虑进位对每一位相加(异或操作)

    第二步:考虑进位(位与运算+左移)

    第三步:第一步和第二步相加(重复执行前两步)

    # 代码

    #include <iostream>
    using namespace std;
    
    class Solution {
    public:
        int Add(int num1, int num2)
        {
            int res,carry;
            do{
                // 第一步:不考虑进位做加法(异或操作)
                res = num1^num2;
    
                // 第二步:考虑加法的进位(与运算+左移)
                carry = (num1&num2)<<1;
    
                // 第三步:第一步和第二步相加
                num1 = res;
                num2 = carry;
                
            }while(num2 != 0);
    
            cout<<num1<<endl;
            return num1;
        }
    };
    int main()
    {
        Solution solution;
        solution.Add(5,7);
        return 0;
    }
  • 相关阅读:
    php (一)
    php 运算符
    Python 元组
    Python 深拷贝和浅拷贝的区别
    Python 列表
    Python 字符串
    Python 循环控制
    Python 随机数,数学
    bzoj5018 [Snoi2017]英雄联盟
    bzoj5015 [Snoi2017]礼物
  • 原文地址:https://www.cnblogs.com/wanglei5205/p/9012850.html
Copyright © 2011-2022 走看看