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

简单来说,按位运算就把数字转换为机器语言——二进制的数字来运算的一种运算形式。在计算机系统中,数值一律用补码来表示(存储)。

Python中的按位运算符有:左移运算符(<>),按位与(&),按位或(|),按位翻转(~)。这些运算符中只有按位翻转运算符是单目运算符,其他的都是双目运算符。

按位与    &

举例:

3&5

解法:3的二进制补码是 11,  5的是101, 3&5也就是011&101,先看百位(其实不是百位,这样做只是便于理解) 一个0一个1,根据(1&1=1,1&0=0,0&0=0,0&1=0)可知百位应该是0,同样十位上的数字1&0=0,个位上的数字1&1=1,因此最后的结果是1.(这之后本来应该还有一步,因为我们现在得到的数值只是所求答案的补码,但是因为正数的补码即是它本身,所以就省略了。不过,下面的例子就不能省略最后这一步了).

-1&-2

解法:-1的补码是11111111,  -2的补码是11111110, 11111111&11111110得到的结果是:11111110,这个是补码,再转化位原码为100000010 (负数转换位原码的方法是减一取反),最后转换为十进制是 -2.

-2&6

解法:-2的补码是11111110,  6的补码是110,   11111110&110,也就是11111110&00000110(这样写的目的是让初学者能够更好理解按位运算),按照上面的方法得到的结果是:110,转化位十进制就是6.

小技巧:利用按位与可以将任意二进制数的最后一位变为0,即就是X&0.

按位并    |

举例:

4|7

解法:按位并的计算规律和按位与的很相似,只不过换了逻辑运算符,并的规律是: 1|1=1 ,1 |0=1, 0|0=0.   4|7转换位二进制就是:100|111=111.  二进制111即为十进制的7.

小技巧:利用按位并可以将任意二进制数的最后一位变为1,即就是X|1.

按位异或    ^

方法:  对位相加,特别要注意的是不进位.

举例:

2^5

解法:10^101=111,二进制111得到十进制的结果是7.

1^1

解法:1+1=0.(本来二进制1+1=10,但不能进位,所以结果是0)

-3^4

解法: -3的补码是11111101,4的补码是100 (也即00000100), 1111 1101^0000 0100=1111 1001,补码1111 1001转为原码是1000 0111,即十进制的-7.

按位翻转  ~

方法: 将二进制数+1之后乘以-1,x的按位翻转是-(x+1) . 注意,按位运算符是单目运算符.  -9 ,  1+~4是正确的,5~3就不对了.

这是更快捷的按位翻转算法,也可以按部就班每位按位取反(包括符号位),最后如果是负数再转为原码

举例:

~3

解法:3的二进制是11, -(11+1)=-100B=-4D. (注:B和D分别表示二进制和十进制).

~-2

解法:   -  (-10+1)  =1 【即(b)10 - 1 = 01】  【此方法不涉及补码】

或者:-2在计算机中存储为补码:1111 1110,按位取反得~1111 1110 = 0000 0001即为1

左移运算符  <<

方法:    X<

举例:

3<<2

解法:11向左移动两位变为1100,即12 .

右移动运算符  >>

方法:    X>>N 将一个数字X所对应的二进制数向右移动N位.

举例:

3>>2

解法:11向右移动两位变为0.

10>>1

解法:10的二进制是1010,向右边移动一位是101,即5.

C语言中的按位移动及其简单引用

C语言中的按位移动及其简单应用 在C语言中按位左移用”<>”表示. 按位左移和按位右移运算经常被用来替换乘二和除二运算,但是要注意,这两者之间并不完全等 ...

【转】Cocoa中的位与位运算

转自:http://www.tuicool.com/articles/niEVjy 介绍 位操作是程序设计中对位模式或二进制数的一元和二元操作. 在许多古老的微处理器上, 位运算比加减运算略快, 通常 ...

Python语言中各种进制相互转换

目录 Python语言中各种进制相互转换 将二进制.八进制.十进制的数分别转换成十进制的方法 将十进制转换成二进制.八进制.十六进制 Python语言中各种进制相互转换 本文参考自https://ww ...

Python语言中的关键字(自己做的读书笔记)

电脑配置:联想笔记本电脑 windows8系统 Python版本:2.7.8 本文章撰写时间:2015.1.1 作者:陈东陈 阅读说明: 1.本文都是先解释,后放图片: 2.文中斜体部分要么为需要输入 ...

python语言中的编码问题

在编程的过程当中,常常会遇到莫名其妙的乱码问题.很多人选择出了问题直接在网上找答案,把别人的例子照搬过来,这是快速解决问题的一个好办法.然而,作为一个严谨求实的开发者,如果不从源头上彻底理解乱码产生的 ...

C语言回顾-函数和位运算

1.函数的概述 功能独立的代码块 C语言由若干函数组成 1)从定义分,库函数和用户定义函数两种 2)从返回值分,有返回值函数和无返回值函数 3)从参数分,无参函数和有参函数 2.形参和实参 1)形参定 ...

Python 进制转换、位运算

一.进制转换 编程用十进制,十进制转换为二进制.八进制.十六进制 In [135]: bin(23) Out[135]: '0b10111' In [136]: oct(23) Out[136]: ' ...

C&plus;&plus;中巧妙的位运算

位运算要多想到与预算和异或运算,并常常将两个数对应位上相同和不同分开处理 一.x&(x-1)消除x二进制中最右边的一个1. 这个比较厉害,比如统计某个 二.与和异或的巧妙结合的思想 与运算可以 ...

了解 Python 语言中的时间处理

python 语言对于时间的处理继承了 C语言的传统,时间值是以秒为单位的浮点数,记录的是从1970年1月1日零点到现在的秒数,这个秒数可以转换成我们日常可阅读形式的日期和时间:我们下面首先来看一下p ...

随机推荐

Android SQLite数据储存方式

SQLiteOpenHelper 类 用SQLiteOpenHelper 类中的 getWritableDatabase()和getReadableDatabase()方法可以获得数据库的引用. 为了 ...

用NDK编译lua库

Android.mk是这样的 LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := lua LOCAL_SRC_FILE ...

Linux 引导过程内幕

转载:http://www.ibm.com/developerworks/cn/linux/l-linuxboot/index.html   从主引导记录到第一个用户空间应用程序的指导 引导 Linu ...

Struts2 中拦截器和Action的调用关系(写的很好)

http://blog.csdn.net/hackerain/article/details/6991082

Django的admin视图的使用

要现在admin.py文件中将你要视图化操作的类进行注册: from django.contrib import admin from api import models # Register you ...

xdcms&lowbar;3&period;0&period;1 &vert; 代码审计

这周的审计任务,这次审计 xdcms . 下面就开始审计之旅.                                                                     ...

Lucene基础学习笔记

在学校和老师一起做项目,在老师的推荐下深入学习了一些SqlServer的知识,看一些书下来哎也没记住多少,不过带来了新疑问. 不使用模糊查询,我应该用什么呢?如何能不影响数据库性能,还能做模糊查询呢? ...

python环境杂谈

最近发现集群里的服务器上有多个python环境,版本相同的python也有多个,主要区别是site-packages里安装的模块不同,这样配置的好处是不同类型的项目可以使用自己的python环境,不会 ...

在Windows使用VC编译ICU

1 编译过程在Cygwin下进行,所以必须得安装Cygwin,并且加上Automake, autoconf, make, ar等选项 2 打开命令行窗口,设置环境变量,主要是可以启动cygwin的ba ...

program files与program files&lpar;x86&rpar;的区别

简单来说:Program Files (x86)存放了一些32位的系统文件.它和正常的Program Files以及Windows文件夹一样,都属于系统文件夹,请勿随意改动. 64位Windows中提 ...

python语言中1010的二进制表示_Python语言中的按位运算相关推荐

  1. python怎么定义一个变量自增_Python语言中的自增运算

    本文主要向大家介绍了Python语言中的自增运算,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. 接触过其他语言的同学可能都知道算数运算符里面有个自增运算符++, 在写循环的时候非 ...

  2. python操作符顺序_Python语言中的操作符与运算顺序

    在新鲜出炉的9月TIOBE编程语言排行榜上,Python历史性的挤下C++,次进入前三位,Python的热度也以肉眼可见的速度快速上涨着,学习Python的人越来越多,不只是成人,很多青少儿也选择从P ...

  3. python语言中range函数的功能_python应用:python range函数

    在您开始之前,在你的计算机将需要Python,但您可能不需要下载它.首先检查(在同级目录下在命令行窗口输入python)有没有安装Python.如果你看到了一个Python解释器的响应,那么就能在它的 ...

  4. c语言中int 3.6 =,(C语言中的常量)乐创DIY C语言讲义​——3.6节

    3.6 常量 常量,顾名思义就是在程序执行期间不会改变的固定值.在C语言中,常量的主要作用有两个,其一为给变量赋值,其二为与变量比较,作为判断条件. 在C语言程序中的常量有四大类,分别是整数型常量,浮 ...

  5. C语言中static的作用及C语言中使用静态函数有何好处

    转自:http://www.jb51.net/article/74830.htm 在C语言中,static的作用有三条:一是隐藏功能,二是保持持久性功能,三是默认初始化为0. 在C语言中,static ...

  6. python以下是变量合法命名的是_Python语言中以下哪个变量的命名是错误的

    [单选题]雨篷.阳台计量不正确的是( ) . [单选题]关于补体活化的MBL途径,哪项是错误的? [单选题]关于楼地面垫层的计量规则,描述错误的是( ). [单选题]根据<建设工程工程畺清单计价 ...

  7. python语言中print函数的作用_python中如何使用print函数

    Python中print语句 1.逗号分隔符 在Python中print语句可根据sys.stdout中包含的文件生成输出,它接受一个逗号分隔的对象表,如下实例:x = 1 y = 2 z = 3 p ...

  8. python语言中print函数的作用_python中print()方法有什么

    python中print()方法有什么 发布时间:2020-11-11 13:50:08 来源:亿速云 阅读:91 作者:小新 这篇文章给大家分享的是有关python中print()方法有什么的内容. ...

  9. python语言中find是什么意思_Python find()函数是什么?

    碰到去检索字符串的情况,罗列自己所学的函数,虽然能够实现,但是不是多多少少,感觉有些冗杂,不是特别简单,如果有这样的疑问,首先恭喜,大家思考能力很好,其次就是给大家带来解决疑难问题的方案,这里专门介绍 ...

最新文章

  1. 【C++】C++11新增关键字详解
  2. bash shell命令(1)
  3. 【Android 逆向】逆向修改游戏应用 ( APK 解析工具 | 解包 -> 分析 -> 重打包 -> 签名 流程 )
  4. [PHP]Maximum execution time of 30 seconds exceeded
  5. java 获取当前时间月加1 ,年加1
  6. hrsc2016 下载 数据集_PIoU Loss:倾斜目标检测专用损失函数,公开超难倾斜目标数据集Retail50K | ECCV 2020 Spotlight...
  7. Matlab 常用语法速记 1
  8. jquery.pin 修改浮动的top元素
  9. [Unity2D]游戏引擎介绍
  10. 提高GAN训练稳定性的9大tricks
  11. MATLAB读取text文件数据,拟合曲线
  12. 交换局域网(链路层+以太网+交换机)
  13. 51nod 1534 棋子游戏(博弈)
  14. Python 指定区域截图
  15. SQL实时库存数量结存
  16. 般若波罗蜜多心经——背过最好了
  17. 短租APP开发定制快速搭建
  18. 物联网的背景及其发展
  19. Python 算法设计与分析 投资问题
  20. 二元函数可微与偏导数_二元函数的连续、偏导数、可微之间的关系-推荐下载...

热门文章

  1. Android OpenGL ES 学习(十) – GLSurfaceView 源码解析GL线程以及自定义 EGL
  2. [译] JavaScript 如何工作的: 事件循环和异步编程的崛起 + 5 个关于如何使用 async/await 编写更好的技巧...
  3. php 做多个关键字搜索,多个关键词搜索的实现
  4. java响应式编程有几种方式_什么是响应式编程,Java 如何实现
  5. 错误 C1900 “P1”(第“20150812”版)和“P2”(第“20130802”版)之间 Il 不匹配
  6. java mysql executequery_java - 无法使用executeQuery()发出数据操作语句
  7. java基础 - 2
  8. 基因迷思—《白金数据 》
  9. 皮肤变白方法,四个日常小技巧!
  10. caffe部署模型,在无caffe环境的机器上运行