Python 解决面试题47 不用加减乘除做加法
在看《剑指Offer》过程中,面试题47不用加减乘除做加法,给出的思路是使用二进制的异或以及与运算,总之就是使用二进制。但是在使用Python实现的过程中,对于正整数是没有问题的,但是对于负数,会出现死循环情况。这是为什么呢?因为在Python中,对于超出32位的大整数,会自动进行大整数的转变,这就导致了在右移位过程中,不会出现移到了0的情况,也就会造成了死循环。
这里需要了解的是Python中整数实现的原理以及二进制中的移位等原理。
已经知道了右移过程中大整数的自动转化,导致变不成0,那么只需要在移动的过程中加一下判断就行了,把craay的值和0xFFFFFFFF做一下比较就可以了,具体代码如下所示。
1 def bit_add(n1, n2): 2 carry = 1 3 while carry: 4 s = n1 ^ n2 5 carry = 0xFFFFFFFF & ((n1 & n2) << 1) 6 carry = -(~(carry - 1) & 0xFFFFFFFF) if carry > 0x7FFFFFFF else carry 7 n1 = s 8 n2 = carry 9 return n1
其实在Python中,可以直接使用内置函数sum求和,不过我感觉sum源码中会用到+?不确定,需要看源码才行。
1 def add(n1, n2): 2 return sum([n1, n2])
转载于:https://www.cnblogs.com/qiaojushuang/p/7818847.html
Python 解决面试题47 不用加减乘除做加法相关推荐
- 【剑指offer-Java版】47不用加减乘除做加法
不用 + - * / 做加法 输入两个整数,不使用四则运算求出这两个数的和 分析加法运算对应的位运算: 1 等价于两个数先做异或运算 – 相当于不考虑进位的加法 2 然后按位与运算并将与运算的和左移一 ...
- 剑指Offer - 面试题65. 不用加减乘除做加法(位运算,要看哦)
1. 题目 写一个函数,求两个整数之和,要求在函数体内不得使用 "+"."-"."*"."/" 四则运算符号. 示例: ...
- 47不用加减乘除做加法
题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. 思路:感觉还是对位运算不太熟悉. ^异或是不进位加法,相同的为0,不同的为1: &与运算是都为1就为1 ...
- 剑指offer面试题65. 不用加减乘除做加法(位运算)
题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用 "+"."-"."*"."/" 四则运算符号. 思路 详见 ...
- 剑指 Offer 65. 不用加减乘除做加法(位运算、递归、迭代)
一.题目 剑指 Offer 65. 不用加减乘除做加法 题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用 "+"."-"."*" ...
- [剑指offer]面试题47:不用加减乘除做加法
面试题47:不用加减乘除做加法 题目:写一个函数,求两个整数之和,要求在函数体内不得使用+.-.×.÷四则运算符号. 代码如下: int add(int num1, int num2) {int su ...
- 剑指offer——面试题47:不用加减乘除做加法
剑指offer--面试题47:不用加减乘除做加法 Solution1: 学习之 书上的思路就很好啊~ class Solution {public:int Add(int num1, int num2 ...
- java 加法不用_【Java】 剑指offer(65) 不用加减乘除做加法
本文参考自<剑指offer>一书,代码采用Java语言. 题目 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.×.÷四则运算符号. 思路 对数字做运算,除了四则运算外,只剩下位 ...
- 如何用java实现加减_用Java实现不用加减乘除做加法操作
面试题1:不用加减乘除,求两个整数的和. import java.util.Scanner; public class GetSum { /** * 不用加减乘除做加法: * 十进制中的18和7相加: ...
最新文章
- gcc编译选项的循环重复查找依赖库等命令
- OpenCV源码中Haar训练及特征提取的代码说明
- 云-阿里云-清单:清单目录
- js日期的初始化的格式
- JSI2性能测试报告
- CART树回归、剪枝、Tkinter GUI
- Exception in thread main java.lang.NoClassDefFoundError
- Linux终端显示工作路径
- 重识 SQLite,简约不简单
- 碰运气解决LATEX中中文颜色深浅不一的问题
- 【路径规划】基于matlab遗传结合模拟退火算法仓库拣货小车最优路径规划【含Matlab源码 649期】
- STM8S103f单片机的开发(1)LED灯的点亮
- JAVA|大小写英文字母表
- 整合X-Admin前端框架改造ABP
- 【读书笔记】《天才在左 疯子在右》
- uniapp之uni-starter小程序多端研发框架搭建与项目实践
- h264 Profile-level-id解析
- MySQL从删库到跑路(6):子查询
- 防范于未“燃”|涂鸦智慧社区推出“黑科技”,电瓶车禁入电梯智慧方案
- BAPI货物移动时报错