看完这篇文章,你会学到:
- 位运算的用法
- 按位与 &
- 按位或 |
- 按位异或 ^
- 按位取反 ~
- 按位左移 <<
- 按位右移 >>
- 转换进制的方法
什么是位运算?
程序中的数在计算机内存中都是以二进制的形式存在的,位运算就是直接对整数在内存中对应的二进制位进行操作。
位运算
基本的位运算有六种:
运算符 | 描述 |
---|---|
& | 按位与 |
| | 按位或 |
^ | 按位异或 |
~ | 按位取反 |
<< | 按位左移 |
>> | 按位右移 |
1、按位与 &
参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0。
bin() 函数可以将数字转化为 2 进制。
>>> a = 3 # bin(3): 11
>>> b = 5 # bin(8): 101
>>> a & b
1 # bin(1): 001
运算过程如下图:
2、按位或 |
只要对应的二个二进位有一个为1时,结果位就为1,否则为0。
>>> a = 3 # bin(3): 11
>>> b = 5 # bin(5): 101
>>> a | b
7 # bin(7): 111
3、按位异或 ^
当两对应的二进位相异时,结果为1,否则为0。
>>> a = 3 # bin(3): 11
>>> b = 5 # bin(5): 101
>>> a ^ b
6 # bin(6): 110
4、按位取反 ~
对数据的每个二进制位取反,即把1变为0,把0变为1。
>>> a = 3 # bin(3): 11
>>> ~ 3
-4 # bin(-4): 100
计算方法:~ a = - a - 1
5、按位左移 <<
运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,低位补0。
规律:
a < < b = a ∗ ( 2 ) b a << b = a * (2) ^ b a<<b=a∗(2)b
>>> a = 3 # bin(3): 11
>>> a << 2
12 # bin(12): 1100
>>> a * (2 ** 2)
12
6、按位右移 >>
把">>“左边的运算数的各二进位全部右移若干位,”>>"右边的数指定移动的位数,低位丢弃。
规律:
a < < b = a / / ( 2 ) b a << b = a // (2) ^ b a<<b=a//(2)b
>>> a = 10 # bin(10): 1010
>>> a >> 2
2 # bin(2): 10
>>> a // (2 ** 2)
2
附:进制转换方法
int(number: str, base=10)
# 将字符串形式的 x 从 base 进制转到 10 进制
# 示例: int('1010', base=2) -> 10
bin(number) # 转为二进制
oct(number) # 转为八进制
hex(number) # 转为十六进制
最后,如果你觉得这篇文章很赞的话,点个赞再走吧!
推荐阅读
yeanky
2021/8/1