#!/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位运算版的算术四则运算的更多相关文章

  1. python位运算

    什么是位运算 位运算就是把数字当成二进制来进行计算,位运算有六种:&(与), |(或), ^(异或), ~(非), <<(左移), >>(右移) &(与) &a ...

  2. python 位运算【实测】

    python 位运算符为  << 左移,>> 右移 3<<2 既 3 的二进制整体向左移两位 : : 可以这么算 3*(2的2次方)= 12 11>> ...

  3. python——位运算之进制转化

    >>> a=0b001100 >>> a 12 >>> b=0o001100 >>> b 576 >>> c= ...

  4. python位运算之计算中位数

    # -*- coding: utf-8 -*- # @Time : 2018/11/23 10:49 PM # @Author : cxa # @File : 1.py # @Software: Py ...

  5. 剑指offer用位运算实现两个数相加,及python相关的位操作

    题目:写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. 代码: # -*- coding:utf-8 -*-class Solution:    def Add(self ...

  6. Python笔记_第一篇_面向过程_第一部分_3.进制、位运算、编码

    通过对内存这一个部分的讲解,对编程会有一个相对深入的认识.数据结构是整个内存的一个重要内容,那么关于数据结构这方面的问题还需要对进制.位运算.编码这三个方面再进行阐述一下.前面说将的数据结构是从逻辑上 ...

  7. 利用位运算进行a+b的计算(Java&&Python)

    题目链接 需要用到的位运算操作:异或(^).与(&).右移(<<) 异或运算:又称不进位加法,a^b得到的结果为a与b相加,但是需要进位的地方不进位得到的结果 与运算:找出来a和b ...

  8. Python语言中的按位运算

    (转)位操作是程序设计中对位模式或二进制数的一元和二元操作. 在许多古老的微处理器上, 位运算比加减运算略快, 通常位运算比乘除法运算要快很多. 在现代架构中, 情况并非如此:位运算的运算速度通常与加 ...

  9. 用Java位运算实现加减乘除四则运算

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6412875.html 感谢博客:http://blog.csdn.net/itismelzp/article/ ...

随机推荐

  1. StoneTab标签页CAD插件 3.2.5

    //////////////////////////////////////////////////////////////////////////////////////////////////// ...

  2. HTML练习二--动态加载轮播图片

    接上一篇https://www.cnblogs.com/shuaimeng/p/11106655.html demo下载: https://pan.baidu.com/s/1dhvzHwTHKiguy ...

  3. 4. Java入门程序

    以eclipse为例,建立一个简单的Java程序. 首先启动eclipse,进入到如下主页面: 新建一个项目,选择“File-New-Java Project”: 弹出了一个如下页面,假设命名为Tes ...

  4. cmd设置电脑自动关机

    cmd设置电脑自动关机 设置:(3600代表一小时,单位s) shutdown -s -t 3600 取消 shutdown -a

  5. python中的not的意思

    python中的not的意思 在python中,not是逻辑判断,用于布尔值true和false,not true是false,not false是true.以下是not的一些常见用法:(1)当表达式 ...

  6. SuperMap iClient3D for WebGL 9D怎么将s3m图层的纹理变更精细些

    设置S3MTilesLayer.lodRangeScale.默认值是1,设的越小越精细,最小值是0.01.越大越模糊,最大值是100

  7. 常见python面试题-手写代码系列

    1.如何反向迭代一个序列 #如果是一个list,最快的方法使用reversetempList = [1,2,3,4]tempList.reverse()for x in tempList:    pr ...

  8. OpenCV_contrib里的Text(自然场景图像中的文本检测与识别)

    平台:win10 x64 +VS 2015专业版 +opencv-3.x.+CMake 待解决!!!Issue说明:最近做一些字符识别的事情,想试一下opencv_contrib里的Text(自然场景 ...

  9. ES查询语句

    记录常用的es 查询 聚合 GET _cat / indices GET / p_ext_develop / _mapping / g GET / p_ext_develop / _analyze { ...

  10. linux-2.6.38poll机制简析(以tiny6410按键中断程序为基础)

    一.应用程序 /* struct pollfd { int fd; //文件描述符 short events; //表示请求检测的事件 short revents; //表示检测之后返回的事件 }; ...