在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 1
如果要计算13|17,则计算方法如下:
01101 29
如果要计算13^17,则计算方法如下:
01101 28
以13
以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 >> 13 >> 1
6
>>> ~13
-14
>>> ~(-123)
122
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
相关推荐: 带软件测试5班学员学习java基础知识(2019-10-13)
计算机语言: 1.机器语言,01 2.低级语言,汇编语言 3.高级语言,C C++ JAVA Python… 编译型语言(强类型) 解释性语言(弱类型) SDK->JDK:java开发包 ->JRE:java的运行时环境 ->J…