剑指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)

全部评论

相关推荐

喜欢走神的孤勇者练习时长两年半:爱华,信华,等华,黑华
点赞 评论 收藏
分享
11-08 13:58
门头沟学院 Java
程序员小白条:竟然是蓝桥杯人才doge,还要花钱申领的offer,这么好的公司哪里去找
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务