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中的位运算符的主要内容,如果未能解决你的问题,请参考以下文章