Python3中的位运算符

Posted AYO小涛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python3中的位运算符相关的知识,希望对你有一定的参考价值。

一·位运算符

python中位运算按照数据在内存中的二进制位(Bit)进行操作,它一般用于底层开发(算法设计、驱动、图像处理、单片机等),在应用层开发(Web 开发、Linux 运维等)中并不常见。

Python 位运算符只能用来操作整数类型,它按照整数在内存中的二进制形式进行计算。

符号

名称

描述

&

按位与

只有两边二进制位数均为1时,输出才为1

|

按位或

只要二进制位数有一边为1,输出就为1

^

按位异或

两边的二进制数不同时为1,相同时为0

~

按位取反

加上该符号,如果原本数为正数,则加上一个负号,二进制加1输出。

如果原本数为负数,则加上一个负号,二进制减1输出。

<<

按位左移

将各个二进制位全部左移若干位

>>

按位右移

将各个二进制位全部右移若干位

二·详细说明与代码解释

我们以整数121和122作为例子,bin()方法是获取整数的二进制形式,以下代码中显示的0b是二进制的标志也是代表省略的0

1·按位与运算符&

print(bin(121))
输出结果:0b1111001
print(bin(122))
输出结果:0b1111010
print(121 & 122)
# 输出结果:120
print(bin(120))
# 输出结果:0b1111000

通过以上代码可以观察出使用&符号时,只有输入的两边二进制位均为1时,才会输出为1。


整数

二进制

输入1

121

0b1111001

输入2

122

0b1111010

输出3

120

0b1111000

2·按位或运算符|

print(bin(121))
输出结果:0b1111001
print(bin(122))
输出结果:0b1111010
print(121 | 122)
# 输出结果:123
print(bin(123))
# 输出结果:0b1111011

通过以上代码可以观察出使用|符号时,只要输入的二进制位数有一边为1,输出的二进制就为1。


整数

二进制

输入1

121

0b1111001

输入2

122

0b1111010

输出3

123

0b1111011

3·按位异或运算符^

print(bin(121))
输出结果:0b1111001
print(bin(122))
输出结果:0b1111010
print(121 ^ 122)
# 输出结果:3
print(bin(3))
# 输出结果:0b11 也就是0b0000011

通过以上代码可以观察出使用^符号时,输入的两边的二进制数不同时输出为1,相同时输出为0。


整数

二进制

输入1

121

0b1111001

输入2

122

0b1111010

输出3

3

0b0000011

4·按位取反运算符~

print(bin(121))  # 为正数时
输出结果:0b1111001
print(~121)
输出结果:-122
print(bin(-122))
输出结果:-0b1111010

print(bin(-121)) # 为负数时
输出结果:-0b1111001
print(~-121)
输出结果:120
print(bin(120))
输出结果:0b1111000

通过以上代码可以观察出使用~符号时,加上该符号,如果原本数为正数,则加上一个负号,二进制加1输出。

如果原本数为负数,则加上一个负号(负负得正),二进制减1输出。

正数

整数

二进制

输入1

121

0b1111001

输出2

-122

-0b1111010

负数

整数

二进制

输入1

-121

-0b1111001

输出2

120

0b1111000

5·按位左移运算符<<

print(bin(121))
输出结果:0b1111001
print(121 << 3) # 二进制数往左移动3位
输出结果:968
print(bin(968))
输出结果:0b1111001000

通过以上代码可以观察出使用<<符号时,将各个二进制位全部左移了3位。


整数

二进制

输入1

121

0b1111001

输出2

968

0b1111001000

6·按位右移运算符>>

print(bin(121))
输出结果:0b1111001
print(121 >> 3) # 二进制数往右移动3位
输出结果:15
print(bin(968))
输出结果:0b1111 往右移出界限的直接没有了

通过以上代码可以观察出使用>>符号时,将各个二进制位全部右移了3位(往右移出界限的直接没有了)。


整数

二进制

输入1

121

0b1111001

输出2

15

0b1111




以上是关于Python3中的位运算符的主要内容,如果未能解决你的问题,请参考以下文章

Java中的位运算

c++中的位运算计算问题

c#中的位运算

数字前面加负数怎么设置

excel2010,如何让会计专用格式负数显示负号,而不是括号?

正数和负数的原码反码补码及二进制位运算