使用位运算对两个数求和-Python代码

chinademon 2020-05-06

题目描述

写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
思路:
异或:求各位只和
与:计算进位
Python代码
# -*- coding:utf-8 -*-
class Solution:
    def Add(self, num1, num2):
        # write code here
        pos_sum = num1
        while num2:
            pos_sum = (num1^num2)& 0xffffffff
            num2 = ((num1&num2)<<1)& 0xffffffff
            num1 = pos_sum
        if pos_sum <= 0x7fffffff:
            return pos_sum
        else:
            return ~(pos_sum ^ 0xffffffff)
        
        
        
note:
0xffffffff表示-1      1111 1111 1111 1111 1111 1111 1111 1111(第一个1是符号位)
0x7fffffff表示最大正数,0111 1111 1111 1111 1111 1111 1111 1111(0是符号位)对0取反为-1,对1取反为-2

相关推荐

OccamsRazor / 0评论 2018-02-05