python3小白课:位运算符
位运算符是用来直接处理数字的原始bit位,是把数字看作二进制来进行计算的。常用在图形、图像处理,文本加解密等领域。
[!tip]
但在日常常见的编程中,实话说比较罕见,而且掌握起来也有一定的难度,掌握后如果不经常使用也容易忘。因此如果你没有对它的日常需要,可以不进行它的掌握,直接跳过本节即可。感兴趣的同学可以自行查阅网上的资料深入学习。
我们来看点简单的例子:
假如 a 为 60,b 为 13。则二进制格式为:
a = 0011 1100
b = 0000 1101
我们有如下的运算符可供选择:
| 运算符 | 描述 | 实例 |
|---|---|---|
| & | 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 | (a & b) 输出结果 12 ,二进制解释: 0000 1100 |
| | | 按位或运算符:只要对应的两个二进位有一个为1时,结果位就为1。 | (a | b) 输出结果 61 ,二进制解释: 0011 1101 |
| ^ | 按位异或运算符:当两对应的二进位相异时,结果为1 | (a ^ b) 输出结果 49 ,二进制解释: 0011 0001 |
| ~ | 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1 。~x 类似于 -x-1 | (~a ) 输出结果 -61 ,二进制解释: 1100 0011 |
| << | 左移动运算符:运算数的各二进位全部左移若干位,由 << 右边的数字指定了移动的位数,高位丢弃,低位补0。 | a << 2 输出结果 240 ,二进制解释: 1111 0000 |
| >> | 右移动运算符:把>>左边的运算数的各二进位全部右移若干位,>> 右边的数字指定了移动的位数 | a >> 2 输出结果 15 ,二进制解释: 0000 1111 |
我们来看一下验证的代码:
# coding:utf-8
a = 0b00111100 # 即a = 60
b = 0b00001101 # 即b = 13
print(a, b)
print(a & b)
print(a | b)
print(a ^ b)
print(~a)
print(a << 2)
print(a >> 2)