在实际编码中,越来越需要考虑代码的性能和执行效率。最近也在研究算法结构方面的知识。
Python的位运算,也就被翻了牌子,重新捋一遍
概念介绍
Python按位运算符 是把 数字看作二进制来进行计算的。
Python中的按位运算法则如下:
运算符 | 名称 | 描述 |
---|---|---|
& | 按位与运算符 | 参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 |
| | 按位或运算符 | 只要对应的二个二进位有一个为1时,结果位就为1 |
^ | 按位异或运算符 | 当两对应的二进位相异时,结果为1 |
~ | 按位取反运算符 | 对数据的每个二进制位取反,即把1变为0,把0变为1。 ~x 类似于 -x-1 |
<< | 左移动运算符 | 运算数的各二进位全部左移若干位,由 << 右边的数字指定了移动的位数,高位丢弃,低位补0 |
>> | 右移动运算符 | 把">>"左边的运算数的各二进位全部右移若干位,>> 右边的数字指定了移动的位数 |
练习
下表中变量 a 为 100,b 为 15,二进制格式如下:
# 0011 1100 数字的二进制格式表现
a = 0110 0100 # 100
b = 0000 1111 # 15
-----------------
a & b = 0000 0100 # 4
a | b = 0110 1111 # 111
a ^ b = 0110 1011 # 107
~a = 1110 0101 # -101
a << 2 =1 1001 0000 # 400
a >> 2 = 0001 1001 # 25