Python位运算:
位运算符 | 说明 | 使用形式 |
& | 按位与 | 1&1=1,0&1=0,1&0=0,0&0=0 |
| | 按位或 | 1|1=1,1|0=1,0|1=1,0|0=0 |
^ | 按位异或 | 1^1=0,0^0=0,1^0=1,0^1=1 |
~ | 按位取反 | ~1=0,~0=1 |
<< | 按位左移 | 6<<1,表示;6<<2,表示;6<<3,表示 |
>> | 按位右移 | 6>>1,表示;6>>2,表示;6>>3,表示 |
由于计算机底层只能识别0和1,这样的二进制符合。所以,使用二进制进行计算速度非常快。下面我们用位运算的方式实现加减乘除和移位操作。
代码实现:
# 位运算实现加法操作
def add(a, b):
while b:
sum = a ^ b # 异或操作
temp = (a & b) << 1 # 与操作和左移位操作
a = sum
b = temp
return a
# 位运算实现减法操作
def subtraction(a, b):
if a < b:
b = ~b
return -~add(a, b)
else:
a = ~a
return ~add(a, b)
# 位运算实现乘法操作
def multiplication(a, b):
sum = 0
while b:
sum = add(sum, a)
b -= 1
return sum
# 位运算实现除法操作
def division(a, b):
if a < b:
return 0
else:
res = division(subtraction(a, b), b) + 1
return res
# 左移位操作 相当于十进制做乘法
def left_move(a, b):
return a << b
# 右移位操作 相当于十进制做除法
def right_move(a, b):
return a >> b
if __name__ == '__main__':
# 位运算实现加法操作
print(add(15, 3))
# 位运算实现减法操作
print(subtraction(11, 11))
# 位运算实现乘法操作
print(multiplication(6, 13))
# 位运算实现除法操作
print(division(33, 3))
# 左移位操作
print(left_move(6, 2))
# 右移位操作
print(right_move(6, 1))
运行结果
18
0
78
11
24
3