码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2020-05-06 13:45:08      阅读:100      评论:0      收藏:0      [点我收藏+]

标签:coding   elf   utf-8   bsp   取反   while   subject   color   异或   

题目描述

写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
思路:
异或:求各位只和
与:计算进位
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代码

标签:coding   elf   utf-8   bsp   取反   while   subject   color   异或   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!