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

不用加减乘除做加法

作者: 豆豆先生的小屋 | 来源:发表于2016-06-10 19:55 被阅读808次
题目要求:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。

仔细一看这题颇有意思,求两个数之和,而且不让用运算符,那么我们就要从二进制入手了。现在假设我们这来那个数分别为12和9,对应的二进制为:1100和1001

  1.  首先只做加法,不考虑进位问题。结果为0101。相当于做异或运算,(1100^1001)=0101
    
  2. 接着只考虑进位。只有1+1会发生进位,所以相当于做按位与运算, 得到结果:(1100&1001)=1000
  3. 在二进制中,1+1会发生进位。所以对于第二步的结果应该采用左移1位 1000<< = 10000

重复上面的步骤,对0101和10000进行加法运算

  1. 算出异或运算0101^10000=10101
  2. 计算进位,(按位与运算)0101&10000=00000

** 结果为0,所以10101就是二进制加法1100和1001的最后结果。换算为十进制就是21**

用程序语言描述是这个样子的:

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

相关文章

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

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

  • 不用加减乘除做加法

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

  • 不用加减乘除做加法

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

  • 不用加减乘除做加法

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

  • 不用加减乘除做加法

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

  • 不用加减乘除做加法

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

  • 不用加减乘除做加法

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

  • 不用加减乘除做加法

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

  • 不用加减乘除做加法

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

  • 不用加减乘除做加法

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

网友评论

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

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