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

题目描述

写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
思路:
异或:求各位之和
与:计算进位
Python代码
 1 # -*- coding:utf-8 -*-
 2 class Solution:
 3     def Add(self, num1, num2):
 4         # write code here
 5         pos_sum = num1
 6         while num2:
 7             pos_sum = (num1^num2)& 0xffffffff
 8             num2 = ((num1&num2)<<1)& 0xffffffff
 9             num1 = pos_sum
10         if pos_sum <= 0x7fffffff:
11             return pos_sum
12         else:
13             return ~(pos_sum ^ 0xffffffff)
14         
15         
16         

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

原文地址:https://www.cnblogs.com/shuangcao/p/12835592.html