当前位置 : 主页 > 编程语言 > python >

python_写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运

来源:互联网 收集:自由互联 发布时间:2022-07-22
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。 参考: ​​​ https://www.jianshu.com/p/a300f0f33e33​​ ''' 写一个函数,求两个整数之和,要求在函数体内


写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。

参考:
​​​ https://www.jianshu.com/p/a300f0f33e33​​

'''
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
'''
# 利用异或以及与进位求解
# 不能一个正数一个负数
# 可能是python的的整型可以无限大的原因, 导致正数和负数的异或操作不断变成更小的负数而不会溢出
# # 使用Swift尝试了一下, 还是可以求得正数和负数的位操作相加运算的
# # -*- coding:utf-8 -*-
# class Solution:
# def Add(self, num1, num2):
# while num2:
# sum = num1 ^ num2
# carry = (num1 & num2) << 1
# num1 = sum
# num2 = carry
# return num1
# s = Solution()
# print(s.Add(4, 2))

# -*- coding:utf-8 -*-
# 通过每次对num1进行与操作保证是一个32位的整形
# 因此最后我们可以判断符号位是否为1做处理
class Solution:
def Add(self, num1, num2):
# write code here
while num2 != 0:
temp = num1 ^ num2
num2 = (num1 & num2) << 1
num1 = temp & 0xFFFFFFFF
# return num1 if num1 >> 31 == 0 else num1 - 4294967296 方法一
return num1 if num1 <= 0x7FFFFFFF else ~(num1 ^ 0xFFFFFFFF)

if __name__ == "__main__":
s = Solution()
print(s.Add(4, 2))

# print(countOne(7))
# print(countOne(8))


上一篇:python_字符串处理&正则
下一篇:没有了
网友评论