不用加减乘除做加法

作者: youzhihua | 来源:发表于2020-03-05 16:15 被阅读0次

题目描述

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

思路

1.此问题可以使用位运算求解。
2.两个数字异或(^)的话,可以得到两数相加不进位的结果;两个数字相与(&)的并左移一位,可以得到需要进位的位数。

例如:5+7 = 1100,第一位和第三位有进位(1010),不进位结果为(2)

  • 101 ^ 111 = 0010
  • 101 & 111 = 1010
  1. 可以写个循环,将异或结果与进位情况一直相与(&),若不为0,说明还是有进位情况,需要进行操作;若为0,则说明没有进位情况,已经得到了最终结果。

Java代码实现

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

Golang代码实现

func add(a int, b int) int {
    for a != 0 {
        temp := a ^ b
        a = (a & b) << 1
        b = temp
    }
    return b
}

相关文章

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

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

  • 不用加减乘除做加法

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

  • 不用加减乘除做加法

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

  • 不用加减乘除做加法

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

  • 不用加减乘除做加法

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

  • 不用加减乘除做加法

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

  • 不用加减乘除做加法

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

  • 不用加减乘除做加法

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

  • 不用加减乘除做加法

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

  • 不用加减乘除做加法

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

网友评论

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

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