位运算
位运算符通常在图形、图像处理和创建设备驱动等底层开发中使用。
使用位运算符可以直接操作数值的原始 bit 位,尤其是在使用自定义的协议进行通信时。
使用位运算符对原始数据进行编码和解码也非常有效。
Python 支持的位运算符有如下 6 个
- &:按位与
- |:按位或
- ^:按位异或
- ~:按位取反
- 《:左位移运算符
- 》:右位移运算符
位运算符的运算法则
代码如下:
# 位运算
# 二进制: 0 1
'''
1 1
8 4 2 1
'''
a = 3
print(bin(a)) # 0b 11
a = 13
print(bin(a))
b = 0b10111 # 0b 二进制 二进制的表示: 0b1000101
print(int(b))
c = -8 # -0b1000 0000 1000
print(bin(c))
c = 0o6430 # 0o 开头的都是八进制 里面的数字不能超过8
print(int(c))
# 开头表示0x 0-9 a-f
# 应用: FFFFFF 000000 FF0000 00FF00
d = 0x9ab16
print(int(d))
'''
&
|
~
^
<<
>>
'''
print(3 & 2)
'''
类似and
1 True 0 False
0000 0011
& 0000 0010
------------
0000 0010
| 类似or
1 True 0 False
'''
print(5 | 3)
'''
0000 0101
| 0000 0011
--------------
0000 0111
'''
print(~5) # 取反 将十进制的数字对应的二进制进行取反操作。
'''
0000 0101
取反:
1111 1010
-6
1111 1010 减1
1111 1001 取反
0000 0110 6
看第一位(第一位是符号位,只要第一位是1的就是负数,第一位是0的就是整数)
-6:
0000 0110
1111 1001 反码
1111 1010 补码
'''
# 异或 ^ 相同的是0 不同的是1
print(3 ^ 5)
'''
# 步骤:
1. 左边的数字转成二进制
2. 右侧的数字转成二进制
3. 对齐,上下进行比较(相同的是0 不同的是1)
4. 将计算的结果转成十进制
3 0000 0011
5 0000 0101
----------------
0000 0110 -----> 6
'''
# 左移:
print(2 << 1) # 4
print(2 >> 1) # 1
'''
2的二进制:
0000 0010
左移: m<<n m*2的n次方
右移: m>>n m//2的n次方
'''
print(16 << 2)
print(16 >> 2)
print(-0b1000000)
print(64 << 1)