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

不用加减乘除做加法

作者: 周英杰Anita | 来源:发表于2020-05-09 15:02 被阅读0次

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

思路:

我们以5+17为例,首先看下十进制加法的计算过程:
第一步是各位相加不进位,结果是12(个位数5和7相加不要进位是2,十位数0和1相加是1,也就是结果等于2+10);
第二步是做进位,个位5+7的进位是10,10位没有进位,因此进位的结果是10;
第三步是将前面两个结果加起来,就是最终结果,12+10 = 22
再看二进制:
5的二进制是101,17的二进制是10001,仍然是分三步走:
第一步,不考虑进位,对每一位相加,0加0,1+1,结果都是0,1+0,0+1,结果都是1,可以看出这个异或的结果一致;
第二步,考虑进位,0+0,0+1,1+0都不会产生进位,只有1+1会有进位,我们可以想象成,先做位与运算,再左移一位。
第三步,仍然是将前面两步的结果相加;相加的过程仍然是重复前两步,直到不产生进位为止。

python2.7解法:

# -*- coding:utf-8 -*-
class Solution:
    def Add(self, num1, num2):
        # write code here
        while num2 != 0:
            num = num1 ^ num2
            carry = (num1 & num2) << 1
            num1 = num
            num2 = carry
        return num1

java解法:

class Solution {
    public int add(int a, int b) {
        while(b!=0)
        {
            int sumn = a ^ b;
            int carry = (a & b) << 1;
            a = sumn;
            b = carry;
        }
        return a;
    }
}

相关文章

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

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

  • 不用加减乘除做加法

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

  • 不用加减乘除做加法

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

  • 不用加减乘除做加法

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

  • 不用加减乘除做加法

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

  • 不用加减乘除做加法

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

  • 不用加减乘除做加法

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

  • 不用加减乘除做加法

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

  • 不用加减乘除做加法

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

  • 不用加减乘除做加法

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

网友评论

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

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