python位运算符_Python运算符之位运算符

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中的运行结果如下:

20205311892559524.png

(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中的运行结果:

202053118105770762.png

(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中的运行结果:

202053118123778753.png

(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中的运行结果:

202053118145063294.png

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

其形式为:m<

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

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

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

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

在Python中的运算结果:

202053118161861599.png

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

其形式为:m >> n

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

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

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

在Python中的运算结果:

202053118174646460.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值