不用加减乘除做加法

  1. 题目描述
  2. 思路分析

题目描述

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

思路分析

  • 用十进制加法思想处理二进制数据的加法
  • 求和、求进位,直到进位为0.
class Solution {
public:
    int Add(int num1, int num2)
    {
        // 辅助变量,第一步的和sum,进位carry
        int sum,carry;
        //循环体求和,循环实现多层进位,模拟每一位相加
        do{
            sum = num1 ^ num2;// 逐位相加求和,进位为0,
            carry = (num1 & num2) << 1;// 求进位,进位需要左移一位
            num1 = sum;// 更新num1
            num2 = carry;// 更新num2
        }while (num2 != 0);//没有进位时,退出循环

        // 返回结果
        return num1;
    }
};

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 1056615746@qq.com

💰

Title:不用加减乘除做加法

Count:178

Author:攀登

Created At:2019-12-26, 23:02:06

Updated At:2024-06-15, 15:53:35

Url:http://jiafeimao-gjf.github.io/2019/12/26/sword-use-add-without-code-func/

Copyright: 'Attribution-non-commercial-shared in the same way 4.0' Reprint please keep the original link and author.

×

Help us with donation