#!/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. Java集合--Hash、Hash冲突

    一.Hash 散列表(Hash table,也叫哈希表),是根据键(Key)而直接访问在内存存储位置的数据结构.也就是说,它通过计算一个关于键值的函数,将所需查询的数据映射到表中一个位置来访问记录,这 ...

  2. SqlServer2008 R2发布订阅

    网上好多大神写的贴子,自己也看着贴子弄的,写的已经很详细了,我就不重复写了,贴上参考资料: http://www.cnblogs.com/dudu/archive/2010/08/26/1808540 ...

  3. java怎么解除文件占用(Dom4j操作完xml后怎么关流)

    一.背景 项目中要解析xml,由于Dom4j的诸多优点,我就用Dom4j解析xml,代码如下: public void readXML() { SAXReader reader = new SAXRe ...

  4. USB相关资料汇总

    [1]USB规范,一切的一切,基本的基本,天书级别USB_11_spec(中文).pdf    USB1.1规范(中文版) usb_20.pdf                     USB2.0规 ...

  5. 【原创】大叔经验分享(78)hive查询报错NoViableAltException

    Hive或spark中执行sql字符常量包含;时会报错,比如 select instr('abc;abc', ';'); 报错 NoViableAltException(-1@[147:1: sele ...

  6. HTML 5浏览器端数据库

    HTML 5浏览器端数据库为什么要使用浏览器端数据库:随着浏览器处理能力的增强,越来越多的双喜鸟网站开始考虑在客户端存储大量的数据,这可以减少用户从服务器获取数据的等待时间. 1.本地存储-本地存储可 ...

  7. qt打包发布

    需要用到qt自带工具windeployqt.exe 安装 以qt 5.8.0为例 安装qt-opensource-windows-x86-mingw530-5.8.0.exe即可 构建Release版 ...

  8. 在Ubuntu中使用uwsgi 启动 Django ,但是静态文件映射出错

    错误 :  找不到/static/下面的静态文件 解决方法: 在uswgi.ini 文件中配置参数 static-map=/static=/home/wb/Desktop/test_django/st ...

  9. 3.MySQL的架构介绍

    MySQL简介: 高级MySQL:mysql 内核 sql优化工程师 mysql服务器的优化 各种参数常量设定 查询语句优化 主从复制 软硬件升级 容灾备份 sql编程 完整的mysql优化需要很深的 ...

  10. sysbench 数据库性能测试工具的使用

    sysbench 数据库性能测试 Mac上安装sysbench测试工具 brew install sysbench 测试sysbench 是否安装成功 //执行这条指令 sysbench cpu -- ...