mycode:

没思路啊。。。二级制四则运算不熟悉。。。

参考:

既然不能使用加法和减法,那么就用位操作。下面以计算5+4的例子说明如何用位操作实现加法:
1. 用二进制表示两个加数,a=5=0101,b=4=0100;
2. 用and(&)操作得到所有位上的进位carry=0100;
3. 用xor(^)操作找到a和b不同的位,赋值给a,a=0001;
4. 将进位carry左移一位,赋值给b,b=1000;
5. 循环直到进位carry为0,此时得到a=1001,即最后的sum。

上面思路还算正常,然而对于Python就有点麻烦了。因为Python的整数不是固定的32位,所以需要做一些特殊的处理,具体见代码吧。
代码里的将一个数对0x100000000取模(注意:Python的取模运算结果恒为非负数),是希望该数的二进制表示从第32位开始到更高的位都同是0(最低位是第0位),以在0-31位上模拟一个32位的int。

注意:

对于:该数的二进制表示从第32位开始到更高的位都同是0  ~  方法一:取余数 方法二:异或

return:不懂。。?????

class Solution(object):
def getSum(self, a, b):
"""
:type a: int
:type b: int
:rtype: int
"""
while b != 0:
carry = a & b
a = (a ^ b) % 0x100000000
b = (carry << 1) % 0x100000000
return a if a <= 0x7FFFFFFF else a | (~0x100000000+1)
class Solution(object):
def getSum(self, a, b):
"""
:type a: int
:type b: int
:rtype: int
"""
MAX = 0x7FFFFFFF
MIN = 0x80000000
mask = 0xFFFFFFFF
while b != 0:
a, b = (a ^ b) & mask, ((a & b) << 1) & mask return a if a <= MAX else ~(a ^ mask)

最新文章

  1. Git 基本概念及常用命令
  2. MVC Castle依赖注入实现代码
  3. Android 6.0 权限管理
  4. (九)uboot配置编译、源码分析
  5. 黄聪:《跟黄聪学WordPress主题开发》
  6. hdu1875
  7. AJAX里调用AJAX,作定时进度刷新
  8. 安装MYSQL 出现Error 1045 access denied 的解决方法
  9. 一看就懂ReactJS
  10. [AC自动机][HDU3065]
  11. zoj 1200 Mining
  12. Velocity入门系列
  13. JSP的学习(3)——语法知识二之page指令
  14. 安装pygame
  15. lua.c:80:31: fatal error: readline/readline.h: No such file or directory
  16. YII2 用 in查询的时候出现无结果, 删除某些值后查询有结果 提前sort数组即可
  17. C/C++中如何在main()函数之前执行一条语句?
  18. dom4j 简单使用
  19. Python中的lambda的简单介绍
  20. 洛谷P4344 [SHOI2015]脑洞治疗仪(ODT)

热门文章

  1. 微信小程序里多出来的奇怪宽度
  2. 如何解决 u盘 错误0x80071AC3:请运行chkdsk并重试
  3. 089、初探ELK (2019-05-13 周一)
  4. 082、数据收集利器 cAdvisor (2019-04-30 周二)
  5. easyUI解析原理
  6. EL作用域对象
  7. 响应式前端框架Bootstrap系列(11)分页
  8. drf模块分析
  9. laravel-admin后台框架基本使用
  10. Linux--目录管理与文件管理--02