1、(JZ48)不用加减乘除做加法
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
#位运算
# -*- coding:utf-8 -*-
class Solution:
def Add(self, num1, num2):
# write code here
a, b = num1, num2
while b != 0:
a, b = a ^ b, (a & b) << 1
a &= 0xFFFFFFFF
return a if a >> 31 <= 0 else a ^ (~0xFFFFFFFF)
# -*- coding:utf-8 -*-
class Solution:
def Add(self, num1, num2):
# write code here
a, b = num1, num2
while b != 0:
a,b = (a^b) & 0xFFFFFFFF,((a&b)<<1) & 0xFFFFFFFF
return a if a<=0x7FFFFFFF else ~(a^0xFFFFFFFF)
思路:位运算
(1)两个数异或:相当于每一位相加,而不考虑进位
(2)两个数相与,并左移一位:相当于求得进位;
(3)将上述两步的结果相加
python需要越界检查。