美文网首页剑指offer-python
不用加减乘除做加法 python

不用加减乘除做加法 python

作者: 小歪与大白兔 | 来源:发表于2018-08-29 13:57 被阅读0次

题目描述
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
思路:不用四则运算,那就只能用位运算了。

  • 首先先想一下普通加法的思路:
  1. 首先是各个对应位相加,不进位
  2. 计算各个位的进位
  3. 然后重复计算前两部得到的结果,直达没有进位产生
  • 二进制下的位运算的思路
  1. 不考虑进位,对每一位相加(相当于二进制的异或)。0加0、1加1都是0;0加1、1加0都是1.
    2.进位,0加0 、0加1、1加0都不会产生进位,只有1加1会产生进位,所以相当于二进制下的与运算,然后在左移一位。(1加1:与运算得到1,在左移一位得到10)
  2. 把前两步的结果相加,该相加的过程依然是重复前面两步,直到不产生进位为止。
# -*- coding:utf-8 -*-
class Solution:
    def Add(self, num1, num2):
        # write code here
        while num2:
            sum = num1 ^ num2
            carry = 0xFFFFFFFF&(num1 & num2)<<1
            carry = -(~(carry - 1) & 0xFFFFFFFF) if carry > 0x7FFFFFFF else carry
            num1 = sum
            num2 = carry
        return num1

s = Solution()
print s.Add(-1,2)

相关文章

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

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

  • 不用加减乘除做加法 python

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

  • Python实现不用加减乘除做加法

    题目描述: 写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。 本猪猪看见题目是毫无头...

  • 不用加减乘除做加法

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

  • 不用加减乘除做加法

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

  • 不用加减乘除做加法

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

  • 不用加减乘除做加法

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

  • 不用加减乘除做加法

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

  • 不用加减乘除做加法

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

  • 不用加减乘除做加法

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

网友评论

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

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