首页 > 开发 > Python > 正文

Python运算符之位运算符

2023-04-27 19:03:19
字体:
来源:转载
供稿:网友

Python中的位运算符与其它语言中的位运算符作用相同。

位运算符也称二进制运算符,并且这些运算符只用于对整型数进行运算。

进行位运算时,整型数被转换为二进制形式,然后位运算符对每位执行有关运算后,将结果再转换回十进制形式,并返回给用户。

Python中共有6种位运算符:

(1)&:按位与运算

对应位上的二进制数进行与运算,如果参加位运算的两个二进制数为1,则结果为1,只要有一个为0,则结果为0,如10和4进行按位与运算,他们对应的二进制形式分别为:1010 和 100,则:

 1 0 1 0
& 0 1 0 0
-----------
  0 0 0 0

即10和4按位与运算的结果为二进制的0,也对应着10进制的0,最终结果即为0,即 10 & 4 = 0

再如,5和6进行按位与运算,其对应的二进制形式分别为: 101 和 110,

  0 1 0 1
& 0 1 1 0
-------------
 0 1 0 0

其运算结果为二进制的100,即十进制的4,也就是说: 5 & 6 = 4

在Python中的运行结果如下:

Python按位与运算

(2)|:按位或运算

按位或运算是二进制对应的每位进行或运算。如果对应的两位都为0,则结果为0,只要有一个为1,则结果为1。

10 和 4的或运算:

 1 0 1 0
| 0 1 0 0
------------
 1 1 1 0

其或运算的结果为二进制的 1110,对应着十进制的 14,即 10 | 4 = 14.

5 和 6的或运算:

 0 1 0 1
| 0 1 1 0
------------
 0 1 1 1

5 和 6的按位或运算结果为 0111,对应的十进制为 7 ,即 5 | 6 = 7.

在Python中的运行结果:

Python中的按位或运算

(3)^:按位异或运算

按位异或运算,即对应的两个二进制位不同时,结果为1,否则为0.

10 和 4 的按位异或运算:

 1 0 1 0
^ 0 1 0 0
------------
 1 1 1 0

即,结果为二进制1110,对应的十进制为14,亦即: 10 ^ 4 = 14

5 和 6 的按位异或运算:

 0 1 0 1
^0 1 1 0
------------
 0 0 1 1

0011对应的十进制数为3,也就是说: 5 ^ 6 = 3

在Python中的运行结果:

Python中的按位异或运算

(4)~:按位取反运算符

该运算是单操作数运算符,即其只需要一个操作数参与运算。运算时,二进制数上的每位取反,即1变为0, 0变为1.

这里涉及到数字在计算机中的存储形式,在计算机中,最高位为符号位,符号位为0时表示正数,符号位为1时表示负数。

数字在计算机中是以补码的形式进行存储的,整数的补码与原码相同,负数的补码是在原码的基础上除符号位外,按位取反后,再加1.

如 +1,原码为0 0001,补码为 0 0001.

-1 ,原码为1 0001,补码为:1 1111。

再如:+2 ,原码为: 0 0010,补码为:0 0010.

-2,原码为:1 0010,补码为:1 1110

10按位取反运算(第1位为符号位):

~ 0  1 0 1 0
 --------------
 1  0 1 0 1

结果最高位为1,为负数,因为负数在计算机中以补码形式存储,转换为原码(先减1,再按位反)为:

1 1011

即对应的十进制数为 -11,即: ~10 = -11.

5 按位取反运算:

~ 0  0 1 0 1
---------------
 1  1 0 1 0

结果对应的原码为: 1 0110,对应的十进制数为:-6

在Python中的运行结果:

Python中的按位取反运算

(5)<<:按位左移运算符

其形式为:m<<n

按位左移运算,m对应的二进制数的每位向左移动n位,后面补0.

如10的二进制数 1010 向左移动两位后为:10 1000,其对应的十进制数为:40.

5的二进制数:0101,向左移动两位后为:1 0100,其对应的十进制数为:20

也就是说,一个整数左移n位相当于这个数 m×2n

在Python中的运算结果:

Python中按位左移运算

(6)>>:按位右移运算符

其形式为:m >> n

即m对应的二进制数每位向右移动n位,移出的二进制数字去掉,最左边空出的变为0.

10的二进制 1010 向右移动1位为:0101,即变为十进制的5;再移动1位变为0010,变为2,再移动1位变为0001,变为1,再移动就一直为0了。

即每向右移动1位,相当于原数除以2,只保留整数部分;移动n位,相当于原数除以2n,只保留整数部分。

在Python中的运算结果:

Python中的按位右移运算

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表