在看《剑指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 不用加减乘除做加法相关推荐

  1. 【剑指offer-Java版】47不用加减乘除做加法

    不用 + - * / 做加法 输入两个整数,不使用四则运算求出这两个数的和 分析加法运算对应的位运算: 1 等价于两个数先做异或运算 – 相当于不考虑进位的加法 2 然后按位与运算并将与运算的和左移一 ...

  2. 剑指Offer - 面试题65. 不用加减乘除做加法(位运算,要看哦)

    1. 题目 写一个函数,求两个整数之和,要求在函数体内不得使用 "+"."-"."*"."/" 四则运算符号. 示例: ...

  3. 47不用加减乘除做加法

    题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. 思路:感觉还是对位运算不太熟悉. ^异或是不进位加法,相同的为0,不同的为1: &与运算是都为1就为1 ...

  4. 剑指offer面试题65. 不用加减乘除做加法(位运算)

    题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用 "+"."-"."*"."/" 四则运算符号. 思路 详见 ...

  5. 剑指 Offer 65. 不用加减乘除做加法(位运算、递归、迭代)

    一.题目 剑指 Offer 65. 不用加减乘除做加法 题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用 "+"."-"."*" ...

  6. [剑指offer]面试题47:不用加减乘除做加法

    面试题47:不用加减乘除做加法 题目:写一个函数,求两个整数之和,要求在函数体内不得使用+.-.×.÷四则运算符号. 代码如下: int add(int num1, int num2) {int su ...

  7. 剑指offer——面试题47:不用加减乘除做加法

    剑指offer--面试题47:不用加减乘除做加法 Solution1: 学习之 书上的思路就很好啊~ class Solution {public:int Add(int num1, int num2 ...

  8. java 加法不用_【Java】 剑指offer(65) 不用加减乘除做加法

    本文参考自<剑指offer>一书,代码采用Java语言. 题目 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.×.÷四则运算符号. 思路 对数字做运算,除了四则运算外,只剩下位 ...

  9. 如何用java实现加减_用Java实现不用加减乘除做加法操作

    面试题1:不用加减乘除,求两个整数的和. import java.util.Scanner; public class GetSum { /** * 不用加减乘除做加法: * 十进制中的18和7相加: ...

最新文章

  1. gcc编译选项的循环重复查找依赖库等命令
  2. OpenCV源码中Haar训练及特征提取的代码说明
  3. 云-阿里云-清单:清单目录
  4. js日期的初始化的格式
  5. JSI2性能测试报告
  6. CART树回归、剪枝、Tkinter GUI
  7. Exception in thread main java.lang.NoClassDefFoundError
  8. Linux终端显示工作路径
  9. 重识 SQLite,简约不简单
  10. 碰运气解决LATEX中中文颜色深浅不一的问题
  11. 【路径规划】基于matlab遗传结合模拟退火算法仓库拣货小车最优路径规划【含Matlab源码 649期】
  12. STM8S103f单片机的开发(1)LED灯的点亮
  13. JAVA|大小写英文字母表
  14. 整合X-Admin前端框架改造ABP
  15. 【读书笔记】《天才在左 疯子在右》
  16. uniapp之uni-starter小程序多端研发框架搭建与项目实践
  17. h264 Profile-level-id解析
  18. MySQL从删库到跑路(6):子查询
  19. 防范于未“燃”|涂鸦智慧社区推出“黑科技”,电瓶车禁入电梯智慧方案
  20. BAPI货物移动时报错

热门文章

  1. 【数据结构和算法】哈希表详解
  2. thymeleaf th:href 多个参数传递格式
  3. SpringMVC上传文件的三种方式
  4. java的Timer定时器
  5. jsp页面中显示word/excel文档方法
  6. 开放API 与 查询语言GraphQL
  7. 【软考】程序设计语言复习指南
  8. 【PAT乙】1044 火星数字 (20分)
  9. NOIP2018初赛翻车总结
  10. rust自我解脱_自我解脱