用python做加法_Python不用加减乘除做加法
将两个数的加法看作两步,第一步是两个数相加但是不进位,第二步是记录之前的两数相加应该进位的地方加上前一个相加但是不进位的数。对于具体的两个不小于0的数m和n,第一步可以看做m和n的异或运算m^n,第二步可以看做m和n的与运算然后左移一位得到实际的进位位置(m&n)< < 1。然后把两个得到的数字加起来继续操作,指到carry进位为0终止操作。对于含有负数的情况'''
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
'''
# 利用异或以及与进位求解
# 不能一个正数一个负数
# 可能是python的的整型可以无限大的原因, 导致正数和负数的异或操作不断变成更小的负数而不会溢出
# 使用Swift尝试了一下, 还是可以求得正数和负数的位操作相加运算的
# -*- coding:utf-8 -*-
# class Solution:
# def Add(self, num1, num2):
# while num2:
# sum = num1 ^ num2
# carry = (num1 & num2) << 1
# num1 = sum
# num2 = carry
# return num1
# s = Solution()
# print(s.Add(4, 2))
# -*- coding:utf-8 -*-
# 通过每次对num1进行与操作保证是一个32位的整形
# 因此最后我们可以判断符号位是否为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
用python做加法_Python不用加减乘除做加法相关推荐
- Python 解决面试题47 不用加减乘除做加法
在看<剑指Offer>过程中,面试题47不用加减乘除做加法,给出的思路是使用二进制的异或以及与运算,总之就是使用二进制.但是在使用Python实现的过程中,对于正整数是没有问题的,但是对于 ...
- java 加法不用_【Java】 剑指offer(65) 不用加减乘除做加法
本文参考自<剑指offer>一书,代码采用Java语言. 题目 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.×.÷四则运算符号. 思路 对数字做运算,除了四则运算外,只剩下位 ...
- 剑指Offer_编程题 不用加减乘除做加法
不用加减乘除做加法 时间限制:1秒 空间限制:32768K 热度指数:81997 算法知识视频讲解 题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. 首先,十进 ...
- 《剑指offer》-- 构建乘积数组、求1+2+3+...+n、不用加减乘除做加法、包含min函数的栈、用两个栈实现队列
一.构建乘积数组: 1.题目: 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*. ...
- [剑指offer]面试题47:不用加减乘除做加法
面试题47:不用加减乘除做加法 题目:写一个函数,求两个整数之和,要求在函数体内不得使用+.-.×.÷四则运算符号. 代码如下: int add(int num1, int num2) {int su ...
- 如何用java实现加减_用Java实现不用加减乘除做加法操作
面试题1:不用加减乘除,求两个整数的和. import java.util.Scanner; public class GetSum { /** * 不用加减乘除做加法: * 十进制中的18和7相加: ...
- 【LeetCode】剑指 Offer 65. 不用加减乘除做加法
[LeetCode]剑指 Offer 65. 不用加减乘除做加法 文章目录 [LeetCode]剑指 Offer 65. 不用加减乘除做加法 一.位运算 一.位运算 本题考察对位运算的灵活使用,即使用 ...
- 剑指offer不用加减乘除做加法_剑指Offer-不用加减乘除做加法
题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. 思路 思路一: 位运算 思路二: 递归 思路三: 调用Integer的sum方法 思路四: 自增自减 代码实现 ...
- 剑指offer——面试题47:不用加减乘除做加法
剑指offer--面试题47:不用加减乘除做加法 Solution1: 学习之 书上的思路就很好啊~ class Solution {public:int Add(int num1, int num2 ...
最新文章
- 开发者们的迷茫期,该怎么看破?
- 保存训练好的模型并调用
- 文档扫描:深度神经网络在移动端的实践
- centos桥接模式怎么联网_今日回收 | 互联网+废品回收模式是怎么兴起的呢?
- open source Swift, Objective-C and the next 20 years of development
- hadoop2.7.3用mapreduce计算pi值
- Windows下Ionic Android开发环境搭建
- 戴森工程师揭秘Dyson 360 Eye吸尘机器人的故事:先要做到“智能”
- Android内核剖析pdf
- css浮动会有什么影响,CSS,浮动及其影响
- Iphone手机,调用微信支付JSAPI缺少参数 timeStamp
- Logo小变动,心境大不同,SVG矢量动画格式网站Logo图片制作与实践教程(Python3)
- OSChina 周六乱弹 ——我们能算儿童票么?
- linux 如何解压z01文件
- PCIe ARI (Alternative Routing-ID Interpretation)介绍
- Git用法及常见问题
- Python tkinter相关Demo演示
- TC35i的TxD和RxD引脚定义
- Geogebra 教程之 02 Geogebra初学者的 8 个基本要素
- 区块链项目研究--Amaya Finance--1
热门文章
- android中变量作用域,在 Android 和 Hilt 中限定作用域
- python求列表最大值下标_切片,丝滑的字符串 | Python基础连载(三)
- python如何测试仪器_如何测试pytest设备本身?
- ACM基础之取消cin与stdio的同步
- wxWidgets:wxRearrangeDialog类用法
- wxWidgets:wxListView类用法
- boost::test::string_cast相关的测试程序
- boost::allocate_shared相关的测试程序
- boost::gil::color_spaces_are_compatible用法的测试程序
- boost::coroutine模块实现合并数组的测试程序