美文网首页
不用加减乘除做加法

不用加减乘除做加法

作者: 李伟13 | 来源:发表于2020-04-27 14:32 被阅读0次

题目描述

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

第一想法

  • 使用逻辑门实现一个加法器(可是我忘了)就是都为1则进位

看了讨论区

数字的相加可分为两个部分

  • 值位的相加
  • 进位的相加
值位的相加
  • 使用异或^来表示值位
101 ^ 111   =  010
进位的相加
  • 使用& 和<< 1表示进位
    因为只有1+1才能发生进位
101 & 111 = 101
101 << 1 = 1010

值位与进位的相加则是最后的结果

1010(进位) + 10(值位)

因为不能使用+这个符号,所以继续拆分再拼接,直到进位为0

AC代码

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

相关文章

  • [python2] 65 不用加减乘除做加法、减法

    1. 不用加减乘除做加法 2. 不用加减乘除做减法 1). 思路1 a - b = a + (-b) 因此可以使用...

  • 不用加减乘除做加法

    题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。 分析 题目要求不能使用四...

  • 不用加减乘除做加法

    剑指 Offer 的一道题:求两个整数之和,不得使用 加 减 乘 除 四种运算符。其实仔细想一想,语言中除了这几种...

  • 不用加减乘除做加法

    题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。 思路 递归采用 按位与 ...

  • 不用加减乘除做加法

    题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。 示例 输入4 1输出5 ...

  • 不用加减乘除做加法

    题目描述写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。 方法一: 方法二:

  • 不用加减乘除做加法

    题目要求:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。 仔细一看这题颇有意思,求...

  • 不用加减乘除做加法

    题目描述:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。 思路:位运算,异或操作用...

  • 不用加减乘除做加法

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

  • 不用加减乘除做加法

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

网友评论

      本文标题:不用加减乘除做加法

      本文链接:https://www.haomeiwen.com/subject/sbdywhtx.html