Python语言中的按位运算

Python位运算符详解 Python 位运算按照数据在内存中的二进制位(Bit)进行操作,它一般用于底层开发(算法设计、驱动、图像处理、单片机等),在应用层开发(Web 开发、Linux 运维等)中并不常见。想加快学习进度,或者不关注底层开发的读者可以先跳过本节,以后需要的话再来学习。Python 位运算符只能用来操作整数类型,它按照整数在内存中的二进制形式进行计算。Python 支持的位运算符如表 1 所示。 阅读详情

   
      本作品采用知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议进行许可。

      转载请注明出处和作者.


   

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

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

      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)可知百位应该是1,同样十位上的数字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),11111101^00000100=11111101,补码                               11111101转为原码是1000111,即十进制的-7.


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

          举例:
                  ~3

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

                  ~-2

                   解法:   -  (-10+1)  =1

       左移运算符  << 

           

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

           举例:

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

        右移动运算符  >>

             

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

             

           举例:

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

                        10>>1
          
                        解法:10的二进制是1010,向右边移动一位是101,即5.
     
                                                <<全文完>>         

         今天学习了一会Python中的按位与运算,觉得教程里面说的不够详细,有不懂的地方。而后在网上找了几篇文章,但都是鱼龙混杂啊,有的一看就知道不是自己写的,好几个实例都是错误的。。自学的艰难啊。。不过最后终于搞明白了,就分享一下自己的笔记。因为现在越来越多的人在网上学习东西,自己从中受益,学到了很多东西,就也想做点贡献作为回报.水平有限,欢迎斧正.
          

              

        

自制JS某课脚本 根据实际需求自制网页讯网刷题脚本,绕过人脸,弹窗,答题,实现自动化运行 阅读详情

相关推荐

Oracle数据库的内存管理优化技巧

Oracle数据库作为企业级数据库管理系统,广泛应用于各种业务场景。内存管理是Oracle数据库性能优化的关键环节,合理的内存管理可以显著提高数据库的响应速度和吞吐量。本文的目的是深入探讨Oracle数据库内存管理的优化技巧,涵盖了系统全局区(SGA)和程序全局区(PGA)的管理、内存分配算法、内存参数调整等方面。通过详细的讲解和实际案例分析,帮助读者掌握优化Oracle数据库内存使用的方法,提高数据库的性能和稳定性。

2502_91592937的博客 995

python的按位运算

华电北风吹 天津大学认知科学与计算重点实验室 最后修改日期:2015/8/6python提供了丰富的位运算操作符,例如按位与,按位或,按位异或,左移位,右移位和取反操作,例子代码如下>>> a,b=45,83 >>> bin(a),bin(b) ('0b101101', '0b1010011') >>> a|b,bin(a|b) (127, '0b1111111') >>> a^b,bin(a^

掉下个小石头 1万+

Windows10完美驱动Apple Studio Display:从雷电接口到亮度调节全攻略

本文详细介绍了如何在Windows10系统上完美驱动Apple Studio Display,涵盖雷电接口兼容性、亮度调节及色彩管理等关键问题。通过实测对比不同转接方案和显卡兼容性,推荐使用贝尔金VR线和NVIDIA GTX-1660显卡,并提供了BootCamp驱动安装和亮度调节的终极解决方案,帮助用户实现最佳显示效果。

elastic6hunter的博客 1119

python按位与怎么算_Python语言中的按位运算符

按位运算符是把数字看作二进制来进行计算的。Python中的按位运算法则如下:按位与( bitwiseandofxandy)&举例: 5&3 = 1解释: 10111相同位仅为个位1,故结果为 1按位或( bitwiseorofxandy)|举例: 5|3 = 7解释: 10111出现1的位是 1 1 1,故结果为 111按位异或( bit...

weixin_39922374的博客 5049

【论文翻译】Enhancing Channel Estimation in High Mobility OTFS Systems: A Novel Pilot-Based Method...

本文介绍了一种用于正交时频空间(OTFS)调制系统的新型基于导频的信道估计方法。我们提出的方法是在ZP-OTFS系统的零填充区域插入一行导频符号,具有减少开销和降低峰均功率比(PAPR)的显著优势。特别是,通过沿多普勒轴分布导频符号,我们的方法在高移动性场景下依然能够提供鲁棒且精确的信道估计,这是像TransPod这种时速超过1000 km/h的运输系统的一个典型特征。这一点至关重要,因为在此类场景下,多普勒频移可能会导致系统性能的严重退化。

Cuby的博客 1210

修复后找不到ip 黑群晖_黑群晖引导U盘损坏了怎么办?

前言虽然一般来说引导U盘损坏的可能性很小,但是避免不了万一出现问题导致黑群晖没有办法引导进入系统也是一件相当麻烦的事情。这里我就用两块U盘做个小试验,看看如果黑群晖上的引导U盘损坏以后,另一块U盘需要怎样写引导文件才能让黑群晖正常引导进入系统。试验开始我这里黑群晖使用的是DSM6.1.7的系统,U盘一块使用的是闪迪的酷豆,另一块就是闪迪的酷铄。目前系统引导U盘使用的是酷豆,VID:0781 PID...

weixin_36239323的博客 8268

python按位运算符_python按位与

广告关闭腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元!python 中有6种位运算符: ①&:按位与运算符,参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0; ②|:按位或运算符,只要对应的二个二进位有一个为1时,结果位就为1; ③^:按位异或运算符,当两对应的二进位相异时,结果为1; ④~:按位取反运算符,对数据的每...

weixin_39772420的博客 1561

基于Blender的AI插件——2D图片生成3D模型

只需5分钟即可从图片到可编辑3D模型,支持Blender全版本兼容。

这里汇聚了前沿的技术分享与实用的开发技巧,带你探索从创意到企业的技术创业之路。 2574

Python按位与、按位或、按位异或、按位取反(笔记)

1. 按位与        按位与是针对二进制数的操作,指将两个二进制数的每一位都进行比较,如果两个相应的二进位都为 1 则此位为 1,否则为 0。在本例中, 5 的二进制表达为 101 , 3 的二进制表达为 11 (为补全位数进行按位操作写作 011 ),则按位与操作后的结果为001 ,对应的十进制数为 1 。  2. 按位或        按位或是针对二进制数的操作,指将两个二进制数的...

Enderman_xiaohei的博客 1万+

深度学习实战35-图卷积神经网络GCN模型的搭建与应用

大家好,我是微学AI,今天给大家介绍一下深度学习实战35-图卷积神经网络GCN模型的搭建与应用,GCN是一种用于处理图结构数据的深度学习模型,它可以捕捉节点之间的拓扑关系和局部特征,并进行图级别的预测和分类任务。下面将介绍如何搭建并应用GCN模型。

微学AI的博客 2225

Vue+OpenLayers6一本通,OpenLayers6完整教程大全,OpenLayers6全知全解,OpenLayers6入门、实战、扩展进阶三合一专栏目录汇总

Gis开发入门,OpenLayers、Leaflet、Maplibre-gl和Cesiumjs地图引擎介绍以及几种地图服务vms、vmts介绍OpenLayers介绍,相比较其他地图引擎有什么优点OpenLayers7.x版本和6.x版本有什么区别,是否需要升级到OpenLayers7版本?OpenLayers6实战:OpenLayers创建自定义控件,以创建一个地图复位控件为例OpenLayers6实战,OpenLayers创建自定义鹰眼控件,自定义鹰眼控件样式,调整鹰眼控件位置、大小、文字和按钮等样式。

GIS技术方向,GIS地图技术分享(GIS入门、Openlayers教程、Leaflet教程),做最好的GIS地图开发教程。关注博主公众号:eguid 2198

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

(转)位操作是程序设计中对位模式或二进制数的一元和二元操作. 在许多古老的微处理器上, 位运算比加减运算略快, 通常位运算比乘除法运算要快很多. 在现代架构中, 情况并非如此:位运算的运算速度通常与加法运算相同(仍然快于乘法运算).简单来说,按位运算就把数字转换为机器语言——二进制的数字来运算的一种运算形式。在计算机系统中,数值一律用补码来表示(存储)。Python中的按位运算符有:左移运算符(&...

weixin_35886717的博客 2674

Airtest进阶使用篇-提高脚本稳定性+批量运行脚本

Airtest进阶篇,主要分享如何提高脚本稳定性+如何批量运行脚本生成测试报告!

程序员小杨哥的博客 2569

python按位或怎么算_Python语言中的按位运算

(转)位操作是程序设计中对位模式或二进制数的一元和二元操作. 在许多古老的微处理器上, 位运算比加减运算略快, 通常位运算比乘除法运算要快很多. 在现代架构中, 情况并非如此:位运算的运算速度通常与加法运算相同(仍然快于乘法运算).简单来说,按位运算就把数字转换为机器语言——二进制的数字来运算的一种运算形式。在计算机系统中,数值一律用补码来表示(存储)。Python中的按位运算符有:左移运算符()...

weixin_39727105的博客 1615

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

python语言按位取反_python的按位运算

华电北风吹天津大学认知科学与计算重点实验室最后修改日期:2015/8/6python提供了丰富的位运算操作符,例如按位与,按位或,按位异或,左移位,右移位和取反操作,例子代码如下>>> a,b=45,83>>> bin(a),bin(b)('0b101101', '0b1010011')>>> a|b,bin(a|b)(127, '0b1111...

weixin_39899691的博客 1194

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

python中单目运算_Python语言中的按位运算

(转)位操作是程序设计中对位模式或二进制数的一元和二元操作. 在许多古老的微处理器上, 位运算比加减运算略快, 通常位运算比乘除法运算要快很多. 在现代架构中, 情况并非如此:位运算的运算速度通常与加法运算相同(仍然快于乘法运算).简单来说,按位运算就把数字转换为机器语言——二进制的数字来运算的一种运算形式。在计算机系统中,数值一律用补码来表示(存储)。Python中的按位运算符有:左移运算符(&...

weixin_39927288的博客 369

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

一个竖杠在python中代表什么,python中的竖线怎么打

这篇文章主要介绍了一个竖杠在python中代表什么,具有一定借鉴价值,需要的朋友可以参考下。大家好,小编为大家解答一个竖杠在python中代表什么的问题。(当然,要向上文那样加括号)的话,就必须算出两边的结果,按位或之后再向下执行。是按位或,或逻辑运算有运算优先级上的不同。在我看来,这种运算符标记,是比较方便的。两端可位运算时,就执行位运算。但这样的表述并不严谨,因为会忽略运算优先级的问题。等)之后,由此,即使不加括号也能算出希望的结果。殊不知,运算的优先级是有不同的。含义是一样的,都是按位运算的意思。

number_516的博客 481

Python模拟A卷选择题

Python模拟A卷选择题

m0_56065966的博客 1073

一个竖杠在python中代表什么,python一竖叫什么符号

这篇文章主要介绍了一个竖杠在python中代表什么,具有一定借鉴价值,需要的朋友可以参考下。(当然,要向上文那样加括号)的话,就必须算出两边的结果,按位或之后再向下执行。在我看来,这种运算符标记,是比较方便的。但这样的表述并不严谨,因为会忽略运算优先级的问题。等)之后,由此,即使不加括号也能算出希望的结果。殊不知,运算的优先级是有不同的。含义是一样的,都是按位运算的意思。

weixin_60705416的博客 957

20190806_python基础笔记

文章目录目录一、面试重点总结二、面试中可能会遇到的题目1.动态语言的内存管理:2.元编程3.计算机5大组成部分及各部分的功能4.python语言的特点三、计算机基础知识1.冯诺伊曼体系2.解释性语言和汇编语言四、python基础知识及练习1.进制2.按位运算3.逻辑运算4.分支及循环5.特殊符号6.python语言的特点7.数值类型8. 容器(1). 列表(2). 元组(3). 字符串(4). b...

weixin_42181870的博客 749

python的计算_Python基础---运算符

PythonPython开发Python语言Python基础---运算符 什么是运算符?本章节主要说明Python的运算符。举个简单的例子4 +5 = 9。 例子中,4和5被称为操作数,"+" 称为运算符。Python语言支持以下类型的运算符:算术运算符比较(关系)运算符赋值运算符逻辑运算符位运算符成员运算符身份运算符运算符优先级接下来让我们一个个来学习Python的运...

weixin_39826342的博客 248

Python运算符大全,值得收藏

包括加(+)、减(-)、乘(*)、除(/)、取余(%)、按位或(|)、按位与(&)、按位求补(~)、左移位(<<)、右移位(>>)、单目求反(-)、幂运算(**)、整除运算(//)、增强运算、增强矩阵乘法(@)。从上面后几个示例看出,逻辑运算符and和or不一定都是返回True或False,or当其中参与运算的数据有个值不为False(包括False、0、空等,下同)则直接返回该数据,and当所有数据都不为False则返回最后一个数据。x not in y x是否不是y的元素。x==y x是否等于y。

hakesashou的博客 848
上一篇: 程序员技术练级攻略 (写的非常好,原文有20000多次的点击率)
下一篇: java笔记
freewind
博客等级 码龄16年 136粉丝 108原创
评论 13
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值