剑指offer,不用加减乘除做加法,python

剑指offer有一道题:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
出题人应该 是想用位运算,但是python对位运算不是很友好,看到一个人用python写了程序,运行没有问题,但是对位运算一直比较懵,谁能帮忙解释以下:

1.0xffffffff=0,用来判断符号吗?为什么第五行不加& 0xFFFFFFFF,运行时间就超长
2. a<=0x7FFFFFFF应该是判断它是不是超过了max_int吧,但是如果a超过了max_int,后面的~(a^0xFFFFFFFF)是什么意思呢?

链接:https://www.nowcoder.com/questionTerminal/59ac416b4b944300b617d4f7f111b215
来源:牛客网
# -*- coding:utf-8-*-
classSolution: 
    def Add(self, a, b):           
        while(b): 
           a,b = (a^b) &0xFFFFFFFF,((a&b)<<1) &0xFFFFFFFF
        returnaifa<=0x7FFFFFFFelse~(a^0xFFFFFFFF)

全部评论

相关推荐

迟缓的斜杠青年巴比Q...:简历被投过的公司卖出去了,我前两天遇到过更离谱的,打电话来问我有没有意向报班学Java学习,服了,还拿我学校一个学长在他们那报班学了之后干了华为OD当招牌
点赞 评论 收藏
分享
05-22 12:44
已编辑
门头沟学院 golang
点赞 评论 收藏
分享
“校招”、“3-5年经验”
飞花断音:小公司招逆向的不要去,基本上都是搞黑灰产违法的东西
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务