博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【剑指offer python】面试题47:不用加减乘除做加法
阅读量:2382 次
发布时间:2019-05-10

本文共 555 字,大约阅读时间需要 1 分钟。

链接:

题目描述

写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
class Solution:    def Add(self, num1, num2):        # write code here        while num2 != 0:            temp = num1 ^ num2            num2 = (num1 & num2) << 1            num1 = temp & 0xFFFFFFFF        return num1 if num1 >> 31 == 0 else num1 - 4294967296
class Solution:    def Add(self, num1, num2):        return sum([num1,num2])
将两个数的加法看作两步,第一步是两个数相加但是不进位,第二步是记录之前的两数相加应该进位的地方加上前一个相加但是不进位的数。对于具体的两个不小于0的数m和n,第一步可以看做m和n的异或运算m^n,第二步可以看做m和n的与运算然后左移一位得到实际的进位位置(m&n)<<1。然后把两个得到的数字加起来继续操作,指到carry进位为0终止操作。

转载地址:http://oyfab.baihongyu.com/

你可能感兴趣的文章
程序员30岁前,月薪达不到30K,该何去何从?
查看>>
只要记住这五点,学习任何新编程语言都不是问题
查看>>
常见的前端开发CSS 面试题及回答策略
查看>>
缺前端是假的,缺优秀前端是真的
查看>>
前端入门那么容易,工作很难找吗?
查看>>
Web前端很难学?html、css t、JavaScrip知识架构图分享
查看>>
常见的前端开发:Javascript 面试题及回答策略
查看>>
前端开发最容易出错的基础知识,面试常问!
查看>>
北漂这五年,跟大家谈谈前端开发的发展以及进阶
查看>>
web前端开发学习推荐这5本书
查看>>
前端是不是没有地位?
查看>>
docker mysql 并远程
查看>>
minIO 对象存储搭建
查看>>
ubuntu - error: ‘sprintf_s’ was not declared in this scope
查看>>
Web Assembly C++ (1) : helloworld
查看>>
Web Assembly C++ (2) : QT Web Assembly
查看>>
快速配置emscripten环境
查看>>
ubuntu 20.04 svn 可视化客户端
查看>>
qt扩展属性框qtpropertybrowser 中添加按钮
查看>>
libiconv 使用 emcc 编译
查看>>