详解Python中的位运算符规则、原理与用法
在Python中,位运算符包括位与(&)、位或(|)、位求反(~)、位异或(^)、左移位(<<)和右移位(>>)。
1. 运算方法与规则
位运算符只能适用于整数,其总体运算规则为:首先把整数转换为二进制表示形式,按最低位对齐,短的高位补0,然后进行位运算,最后把得到的二进制转换为十进制数。
位与运算符运算规则:0&0=0&1=1&0=0,1&1=1
位或运算符运算规则:0|1=1|0=1|1=1,0|0=0
位求反运算符运算规则:~0=1,~1=0,对于整数x有~x=-(x+1)
位异或运算符运算规则:0^0=1^1=0,0^1=1^0=1
左移位运算符运算规则:原来的所有位左移,最低位补0,相当于乘以2
右移位运算符运算规则:原来的所有位右移,最低位丢弃,最高位使用符号位填充,相当于整除2
2. 举例说明
以13&17为例,首先把13转换为二进制数1101,把17转换为10001,然后按最低位对齐,13的二进制形式高位补0得到01101,按位进行与运算:
01101 <====13
10001 <====17
---------
00001 ====>1
如果要计算13|17,则计算方法如下:
01101 <====13
10001 <====17
---------
11101 ====>29
如果要计算13^17,则计算方法如下:
01101 <====13
10001 <====17
---------
11100 ====>28
以13<<1为例,首先将13转换为二进制形式1101,然后左移1位,最低位补0,得11010,转换为十进制数为26,相当于13*2。
以13>>1为例,首先将13转换为二进制形式1101,然后右移1位,最低位丢弃,最高位使用符号位0补充,得110,转换为十进制数为6,相当于13//2。
位求反比较难理解一些,并不是简单地按位求反。这里的关键在于,计算机内部是使用二进制补码形式来存储数据的,整数的补码与原码相同,而负数的补码为其绝对值的原码各位求反再加1,这是理解位求反运算的关键。以~13为例,计算过程为:首先把13转换为二进制形式00001101(这里以8位为例,这不影响计算过程和结果),各位求反得到11110010,这是一个负数的二进制补码形式,其对应的数值是-14。再以~(-123)为例,首先将其转换为二进制补码形式10000101,然后按位求反得01111010,转换为十进制为122。
3. Python中位运算符的用法
>>> 13 & 17
1
>>> 13 | 17
29
>>> 13 ^ 17
28
>>> 13 << 1
26
>>> 13 >> 1
6
>>> ~13
-14
>>> ~(-123)
122
详解Python中的位运算符规则、原理与用法相关推荐
- python apply lambda if_详解Python中的map、lambda和apply用法
Hello大家好,欢迎来到[统计GO],本公众号内容主要针对数据分析的爱好者,不定期分享一些好用的数据分析工具和机器学习资料,以及一些求职必备技能,帮助大家花更少的时间学更多的知识. 今天为大家推荐的 ...
- python中groupby()函数讲解与示例_详解python中groupby函数通俗易懂
一.groupby 能做什么? python中groupby函数主要的作用是进行数据的分组以及分组后地组内运算! 对于数据的分组和分组运算主要是指groupby函数的应用,具体函数的规则如下: df[ ...
- python open 打开是什么类型的文件-详解Python中open()函数指定文件打开方式的用法...
文件打开方式 当我们用open()函数去打开文件的时候,有好几种打开的模式. 'r'->只读 'w'->只写,文件已存在则清空,不存在则创建. 'a'->追加,写到文件末尾 'b'- ...
- [转载] python中for语句用法_详解Python中for循环的使用_python
参考链接: 在Python中将else条件语句与for循环一起使用 这篇文章主要介绍了Python中for循环的使用,来自于IBM官方网站技术文档,需要的朋友可以参考下 for 循环 本系列前面 &q ...
- python中for语句用法_详解Python中for循环的使用_python
这篇文章主要介绍了Python中for循环的使用,来自于IBM官方网站技术文档,需要的朋友可以参考下 for 循环 本系列前面 "探索 Python,第 5 部分:用 Python 编程&q ...
- python操作目录_详解python中的文件与目录操作
详解python中的文件与目录操作 一 获得当前路径 1.代码1 >>>import os >>>print('Current directory is ',os. ...
- python中list[1啥意思_详解Python中list[::-1]的几种用法
本文主要介绍了Python中list[::-1]的几种用法,分享给大家,具体如下: s = "abcde" list的[]中有三个参数,用冒号分割 list[param1:para ...
- pythonnamedtuple定义类型_详解Python中namedtuple的使用
namedtuple是Python中存储数据类型,比较常见的数据类型还有有list和tuple数据类型.相比于list,tuple中的元素不可修改,在映射中可以当键使用. namedtuple: na ...
- python停止线程池_详解python中Threadpool线程池任务终止示例代码
需求 加入我们需要处理一串个位数(0~9),奇数时需要循环打印它:偶数则等待对应时长并完成所有任务:0则是错误,但不需要终止任务,可以自定义一些处理. 关键点 定义func函数处理需求 callbac ...
最新文章
- 深度报告:芯片设计EDA 2.0时代,三大路径搞定六大挑战
- 用模板来进行类型检查。
- C语言结构体赋值和有指针成员的结构体赋值
- 组合数据类型综合练习
- login窗口for mysql_CTF| SQL注入之login界面
- 直接上干货!技术水平真的很重要!复习指南
- html跨行使用的属性,HTML表格标记详解4:TD参数中设定跨列跨行属性
- mut a:T 和a:mut T的区别
- MySQL的详细安装教程和配置过程(附安装包)
- Android仿虾米音乐播放器之专辑图片模糊处理
- C# 在 Excel 中创建组合图表
- pagefile.sys删除
- html怎么在表格中加虚线,html设置虚线边框的方法详细介绍
- js控制键盘按键(回车、空格)
- 微型计算机结构框图,微型计算机系统结构图.doc
- 为什么机器学习之路没有捷径可走
- Verilog 总结
- MIPI通讯的初理解
- MATLAB---形态学滤波
- 北斗和GPS定位在室外非常好用,但当手机进入室内时,它们的定位功能就很不准,甚至无法定位。我们可以开启WLAN扫描定位WIFI模块固定编码或者开启手机的A-GPS辅助定位通过基站,A-GPS服务器定位
热门文章
- 计算机多媒体技术怎么考一建,一建考试视频
- php写else老是报错,调试PHP错误经常用到的一些
- mysql timestamp 默认值是什么#039;_MYSQL中TIMESTAMP类型的默认值
- 基于JAVA+Servlet+JSP+MYSQL的牙科诊所管理系统
- Error:No cached version of com.android.tools.build:gradle:2.0.0 available for offline mode
- 计算机网络DNS域名配置,如何设置计算机的IP地址和DNS域名服务器
- java复制和上传_java文件上传复制等功能
- 关于SQL server事务
- 【转】sqlserver使用sql导出索引
- Java语言基础(2)