使用位运算对两个数求和-Python代码
Posted 爽歪歪666
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用位运算对两个数求和-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
以上是关于使用位运算对两个数求和-Python代码的主要内容,如果未能解决你的问题,请参考以下文章