python位运算版的算术四则运算
Python 运算 算术 四则运算
2023-09-14 09:06:36 时间
#!/usr/bin/python
# -*- coding: utf-8 -*-
class ElementOperator:
def add(self, num1, num2):
# 32bits integer max/min
MAX = 0x7FFFFFFF
MASK = 0xFFFFFFFF
ans = num1
while num2 != 0:
ans = (num1 ^ num2) & MASK
num2 = ((num1 & num2) << 1) & MASK
num1 = ans
return ans if ans <= MAX else ~(ans ^ MASK)
def subtract(self, num1, num2):
mid = self.add(~num2, 1)
return self.add(num1, mid)
def is_negative(self, num1, num2):
return (num1 ^ num2) < 0
def abs(self, num):
if num >= 0:
return num
else:
return self.add(~num, 1)
def multiply(self, num1, num2):
abs1 = self.abs(num1)
abs2 = self.abs(num2)
ans = 0
while abs2 != 0:
if abs2 & 1:
ans = self.add(ans, abs1)
abs2 = abs2 >> 1
abs1 = abs1 << 1
if self.is_negative(num1, num2):
return self.add(~ans, 1)
return ans
def divide(self, num1, num2):
# exception
if num2 == 0:
raise Exception("Divisor is zero.", num2)
abs1 = self.abs(num1)
abs2 = self.abs(num2)
ans = 0
i = 31
while i >= 0:
if (abs1 >> i) >= abs2:
ans = self.add(ans, 1 << i)
abs1 = self.subtract(abs1, abs2 << i)
i = self.subtract(i, 1)
if self.is_negative(num1, num2):
return self.add(~ans, 1)
return ans
if __name__ == '__main__':
s = ElementOperator()
print(s.add(5, 2))
相关文章
- Python爬虫实现统计博客园博文数量、阅读量、评论数
- Python中的单例模式的几种实现方式的及优化
- Python快速学习03:运算 & 缩进和选择
- selenium webdriver (python) 第一版PDF
- Python:基本运算、基本函数(包括复数)、Math模块、NumPy模块
- 学习10:Python重要知识
- 教你用Python实现简单监督学习算法
- selenium+Python富文本框赋值
- Python语言学习之文件夹那些事:python和文件夹的使用方法之详细攻略
- 有什么免费python安装包?
- python练习题-99乘法表
- python __getitem__()方法==>可以直接通过P[key]做运算
- python取中位数 位运算
- python两个装饰器的运算顺序
- 【华为机试真题 Python实现】仿 LISP 运算【2022 Q1 Q2 |200分】
- Python除法运算/、//、%、divmod
- Python: 矩阵与线性代数运算
- Python: 大型数组运算
- Python的幂运算
- kaggle bike sharing program R code tranlated from python code ranked 9th
- Python——逻辑运算与比较运算(四)