python加减法计算题 代码_关于《剑指offer》中不用加减乘除做加法的Python代码的问题...

题目如下:

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

题目不难,可以采用位操作来实现,利用异或运算来计算不带进位的加法结果,利用与运算计算进位的标志,然后将这两个结果进行不带进位相加,重复上述过程,直至进位标志位0.

代码如下

# -*- coding:utf-8 -*-

class Solution:

def Add(self, num1, num2):

# write code here

while num2!=0:

tmp = num1^num2

num2 = (num1&num2)<<1

num1 = tmp

return num1

发现当一个整数和一个负数相加时出现了死循环,其实问题出在tmp = num1^num2这条语句中。

实际上,在进行负数的按位加法时,有可能发生在最高位还要向前进一位的情形,正常来说,这种进位因为超出了一个int可以表示的最大位数,应该舍去才能得到正确的结果。因此,对于Java,c,c++这样写是正确的。而对于Python,却有点不同。

在早期版本中如Python2.7中,整数的有int和long两个类型。int类型是一个固定位数的数;long则是一个理论上可以存储无限大数的数据类型。当数大到可能溢出时,为了避免溢出,python会把int转化为long。而Python3.x之后整数只有一个可以放任意大数的int了。可是无论哪种,都是采用了特殊的方法实现了不会溢出的大整数。 所以会使程序无限的算下去,这也是Python效率低的一个原因。

改正的代码,可以每次都把num1规定成一个32位的数

# -*- coding:utf-8 -*-

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

32个1也就是一个int可表示的无符号整数为4294967295,对应的有符号为-1。因此最后我们可以判断符号位是否为1做处理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/335608.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

接口方法javadoc注释_继承Javadoc方法注释

接口方法javadoc注释尽管用于javadoc工具的JDK工具和实用程序页面通过实现和继承方法来描述Javadoc方法注释重用的规则&#xff0c;但是当实际上不需要使用{inheritDoc}时&#xff0c;很容易不必要地显式描述注释继承&#xff0c;因为会使用相同的注释隐式继承。 Java 8 javado…

HH SaaS电商系统的商品销售管理标签功能模块设计

1、商城和店铺有各自的销售管理标签 2、商品管理标签跟着商品走&#xff0c;关联spu_ext_id或者sku_ext_id&#xff0c;多对多关系

redis java 监听_从零手写实现redis(四)添加监听器

前言java从零手写实现redis&#xff08;一&#xff09;如何实现固定大小的缓存&#xff1f;java从零手写实现redis&#xff08;三&#xff09;redis expire 过期原理java从零手写实现redis&#xff08;三&#xff09;内存数据如何重启不丢失&#xff1f;本节&#xff0c;让我们…

neo4j导入两个文件_Neo4j:找到两个纬度/经度之间的中点

neo4j导入两个文件在过去的两个周末中&#xff0c;我一直在处理一些运输数据&#xff0c;并且我想运行A *算法来查找两个车站之间的最快路线。 A *算法将EstimateEvaluator作为其参数之一&#xff0c;并且该评估器查看节点的经度/纬度&#xff0c;以确定一条路径是否值得遵循。…

HH SaaS电商系统的商品营销服务功能模块设计

商品营销服务 1、服务只属于商城&#xff0c;自营店铺共享商城的服务&#xff0c;第三方店铺可以申请服务 2、服务跟着素材模板走&#xff0c;关联素材模板id&#xff0c;多对多关系

drill apache_如何指南:Apache Drill入门

drill apacheApache Drill是一个引擎&#xff0c;可以连接到许多不同的数据源&#xff0c;并为它们提供SQL接口。 它不仅是遍历任何复杂事物SQL界面&#xff0c;而且是功能强大的界面&#xff0c; 其中包括对许多内置函数和窗口函数的支持。 尽管它可以连接到可以使用SQL进行查…

mac mysql 重设密码_Mac下忘记mysql密码重新设置密码的图文教程

MySQL 文件在路径/usr/local/mysql下1&#xff0c; 在系统偏好设置中关闭 mysql &#xff1a; Stop MySQL Server2 &#xff0c;打开终端进入路径  /usr/local/mysql/bin输入命令 sudo su&#xff0c; 然后输入开机密码。然后输入命令&#xff1a;./mysqld_safe –skip-grant-…

HH SaaS电商系统的商品销售分区功能模块设计

商品销售分区 1、销售分区跟着商品走&#xff0c;关联spu_ext_id,多对多关系 2、商城和店铺有各自的销售分区

spring 安全编码_Spring安全性和密码编码

spring 安全编码在以前的文章中&#xff0c;我们深入探讨了Spring安全性。 我们实现了由jdbc支持的安全性&#xff0c;基于自定义 jdbc查询的安全性以及从nosql数据库检索安全性的信息。 通过足够小心&#xff0c;我们会发现密码为纯文本格式。 尽管这在实际环境中可以很好地用…

python网管系统_IT外包网管服务,Python密度聚类算法-DBSCAN实践

蓝盟 IT小贴士&#xff0c;来喽&#xff01;可以看出&#xff0c;a点附近的点密度大&#xff0c;红色的圆按照一定的规则在这里滚动&#xff0c;最终收纳a点附近的5点&#xff0c;标记为红色是同一个簇。其他没有收纳的东西&#xff0c;按照相同的规则进行集群化。从图像上来看…

HH SaaS电商系统的商品物流模板的功能设计

商品物流模板 1、物流模板跟着商品走&#xff0c;关联spu_ext_id,一对多关系 2、商城和店铺有各自的物流模板

activiti 变量_如何在Activiti中使用瞬态变量

activiti 变量我们昨天发布的Activiti v6 Beta3中已经加入了很多需要的功能-临时变量。 在这篇文章中&#xff0c;我将向您展示一个示例&#xff0c;说明如何使用瞬态变量来覆盖一些以前不可能&#xff08;或最佳&#xff09;的高级用例。 到目前为止&#xff0c;Activiti中的…

erosa mysql_MySQL协议和canal实现

前言前面的文章里&#xff0c;我们了解到 canal 可以从 MySQL 中感知数据的变化。这是因为它模拟 MySQL slave 的交互协议&#xff0c;伪装自己为 MySQL slave &#xff0c;从而实现了主从复制。正是了解到这一点&#xff0c;笔者有两个问题便一直萦绕于心&#xff1a;它是如何…

HH SaaS电商系统的商品关联版式功能模块设计

关联版式 1、关联版式跟着商品走&#xff0c;关联spu_ext_id&#xff0c;一对多关系 2、商城和店铺有各自的关联版式

spring nosql_使用Spring Security和NoSQL的Spring Boot

spring nosql在前面的文章中&#xff0c;我们从一个SQL数据库提供用户和权威检索自定义查询设置弹簧安全配置。 如今&#xff0c;许多现代应用程序都使用NoSQL数据库。 Spring安全性不是NoSQL数据库的现成解决方案。 在这种情况下&#xff0c;我们需要通过实现自定义UserDeta…

ofbiz修改mysql_如何将OFBIZG的默认数据库更改mysql的方法(只求参考 )

ofbiz自带的数据库是Derby,这是一种小型的适合与测试系统的数据库,但不适合在产品级系统中使用,所以通常我们需要将ofbiz迁移到其它数据库上,下面我就以如何迁移至mysql为例,向大家讲述数据库迁移过程,迁移至其它数据库的过程类似.第一步:修改entityengine.xml文件.该文件的位置…

HH SaaS电商系统的供应商系统设计

供应商信息结构图 供应商类型 商城的供应商划分为专享型、共享型两种&#xff0c;但是租户和店铺供应商则都是“专享型”的。 共享型供应商发布的商品归属供应商自己的&#xff0c;商品档案供应商才有资格管理&#xff0c;所以spu_base需要保存供应商id&#xff0c;有供应商id…

c mysql 地址池_FreeRadius 根据mysql 下发指定地址池的地址...

一、使用radius本地文件存储IP地址。修改modules/ippoolippool main_pool {range-start 192.168.111.1range-stop 192.168.113.254netmask 255.255.255.0cache-size 800session-db ${db_dir}/db.ippoolip-index ${db_dir}/db.ipindexoverride nomaximum-timeout 0}在si…

aws faas_带有AWS Lambda和Java的无服务器FaaS

aws faas什么是无服务器架构&#xff1f; 无服务器架构在由第三方完全管理的临时容器中运行自定义代码。 自定义代码通常只是完整应用程序的一小部分。 也称为函数 。 这为无服务器架构提供了另一个名称&#xff0c;即功能即服务 &#xff08;FaaS&#xff09;。 该容器是短暂的…

跨境商品的进口税额显示

跨境商品的采购类型有三种&#xff1a;直邮、保税、一般贸易&#xff0c;而一般贸易的商品已经清关入境了&#xff0c;虽然是跨境商品&#xff0c;但是无需再清关&#xff0c;所以商品详情页无需显示进口税相关信息。 直邮跨境商品显示的进口税信息如下图所示&#xff1a; 保税…