leetcode 算法题 371:不用加减号计算两个数的加减法
2019-03-24 11:15
295 查看
题目
leetcode源地址
不使用运算符 + 和 - ,计算两整数 a 、b 之和。 示例 1: 输入: a = 1, b = 2 输出: 3 示例 2: 输入: a = -2, b = 3 输出: 1解决方案
# 正数与边界数 按位与(&) 操作后 仍得到这个数本身 # 负数与边界数 按位与(&) 操作后 得到的是对应二进制数的真值: class Solution: def getSum(self, a: int, b: int) -> int: while(b): a, b = (a ^ b) & 0xFFFFFFFF, ((a & b) << 1) & 0xFFFFFFFF # 由于python长整数类型可以表示无限位,所以需要人为设置边界,避免死循环。 return a if a<= 0x7FFFFFFF else ~(a^0xFFFFFFFF) def main(): solution = Solution() print(solution.getSum(5, -1)) if __name__ == '__main__': main()
参考资料:
https://blog.csdn.net/lrs1353281004/article/details/87192205
相关文章推荐
- leetcode371 Sum Of Integers 不用加法计算两个整数的和
- LeetCode 231. Power of Two (算法,计算二进制数中1的位数)
- LeetCode 29 Divide Two Integers (不使用乘法,除法,求模计算两个数的除法)
- 【LeetCode-面试算法经典-Java实现】【002-Add Two Numbers (单链表表示的两个数相加)】
- leetcode:Pow(x, n) (计算x的n次方) 【面试算法题】
- 不用任何操作符(包括位运算符)计算两个数的加法
- 2014级算法第1周(春)项目——计算两个数的最大公约数(修改)
- 【LeetCode-面试算法经典-Java实现】【001-Two Sum(求两个数的和)】
- [2016/11/17]不用加减号,求两个数的和
- 【LeetCode-面试算法经典-Java实现】【002-Add Two Numbers (单链表表示的两个数相加)】
- leetcode:Maximum Depth of Binary Tree(计算二叉树深度) 【面试算法】
- leetcode 两个数相除,不用乘除和mode
- LeetCode: Count Primes(计算n以内素数个数:高效算法)
- 【LeetCode-面试算法经典-Java实现】【150-Evaluate Reverse Polish Notation(计算逆波兰式)】
- 不用任何算术运算符计算两个数的和
- LeetCode371——Sum of Two Integers(不用+)
- Leetcode 371 求两个数的和
- 【LeetCode-面试算法经典-Java实现】【151-Evaluate Reverse Polish Notation(计算逆波兰式)】
- 不用加减乘除计算两个数的加法
- 算法--两个数大小比较,不用分支判断