Python位运算应用场景有哪些,有几种类型

Admin 2022-08-08 群英技术资讯 294 次浏览

关于“Python位运算应用场景有哪些,有几种类型”的知识有一些人不是很理解,对此小编给大家总结了相关内容,具有一定的参考借鉴价值,而且易于学习与理解,希望能对大家有所帮助,有这个方面学习需要的朋友就继续往下看吧。

  



简介

程序中的数在计算机内存中都是以二进制的形式存在的,位运算就是直接对整数在内存中对应的二进制位进行操作,一般是将数字化为二进制数后进行操作。

应用场景

在常规操作和位运算的操作中使用位运算,可以提升性能。但是会造成代码难以理解,建议合理利用。

1、统计奇数

2、统计偶数

3、统计不相同数等

4、求相反数

位运算分有6种:

1、按位与:两个位都为1时,结果才为1(统计奇数)即全1为1。

2、按位或:两个位都为0时,结果才为0(统计偶数)即全0为0。

3、按位异或:两个位相同为0,相异为1(常用统计不相同数)即不同为1。

4、按位取反:0变1,1变0,相当于 -x-1

5、左移运算:各二进位全部左移若干位,高位丢弃,低位补0。

6、右移运算:各二进位全部右移若干位,对无符号数,高位补0,有符号数进行补符号位(算术右移),或者补0(逻辑右移)。

案例源码

# -*- coding: utf-8 -*-
# time: 2022/5/22 17:56
# file: bitwise.py
# 公众号: 玩转测试开发

# &:两个位都为1时,结果才为1(统计奇数)即全1为1。
a1 = 10
b1 = 9
"""
10 = 0b1010
9  = 0b1001
8  = 0b1000
"""
print(bin(a1))
print(bin(b1))
print(a1 & b1)  # 8
print(int("0b1000", 2))

# |:两个位都为0时,结果才为0(统计偶数)即全0为0。
a2 = 10
b2 = 9
"""
10 = 0b1010
9  = 0b1001
11 = 0b1011
"""
print(bin(a2))
print(bin(b2))
print(a2 | b2)  # 11
print(int("0b1011", 2))

# ^:两个位相同为0,相异为1(常用统计不相同数)即不同为1。
a3 = 10
b3 = 9
"""
10 = 0b1010
9  = 0b1001
3  = 0b0011
"""
print(bin(a3))
print(bin(b3))
print(a3 ^ b3)  # 11
print(int("0b0011", 2))

# ~:0变1,1变0,相当于 -x-1
a4 = 10
"""
10 = 0b1010
-x-1 = -11
"""
print(bin(a4))
print(~a4)  # -11
print(int("-0b1011", 2))

# 求相反数
print(~a4 + 1)  # -10

# <<:各二进位全部左移若干位,高位丢弃,低位补0,即:x << n = x * (2 ** n)
a5 = 10
"""
10 = 0b1010
x = 10 * 2 ** 3 = 10 * 2 * 2 * 2
"""
b5 = a5 << 3
print(bin(b5))
print(b5)  # 80
print(int("0b1010000", 2))

# >>:各二进位全部右移若干位,对无符号数,高位补0,有符号数进行补符号位(算术右移),或者补0(逻辑右移)。
#     即:x << n = x / (2 ** n)
a6 = 64
"""
64 = 0b1000000
x = 64 / (2 ** 3) = 64 / (2 * 2 * 2)
"""
b6 = a6 >> 3
print(bin(b6))
print(b6)  # 8

# 经典案例:使用 ^ 找出出现一次的数
a7 = 1 ^ 1 ^ 2
a8 = 1 ^ 2 ^ 1
a9 = 2 ^ 1 ^ 1
print(a7)
print(a8)
print(a9)

# 统计原始方法和位运算方法花费的时间
import time

loop = 30000000
start1 = time.time()
odd_list1 = []

for i in range(loop):
    if i & 1 == 1:
        odd_list1.append(i)
end1 = time.time()
print(f"time1:{end1 - start1}")

start2 = time.time()
odd_list2 = []

for i in range(loop):
    if i % 2 == 1:
        odd_list1.append(i)
end2 = time.time()
print(f"time2:{end2 - start2}")

# time1:5.262001037597656
# time2:4.736037492752075

以上就是关于“Python位运算应用场景有哪些,有几种类型”的介绍了,感谢各位的阅读,如果大家想要了解更多相关的内容,欢迎关注群英网络,小编每天都会为大家更新不同的知识。
群英智防CDN,智能加速解决方案
标签: Python位运算

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

猜你喜欢

成为群英会员,开启智能安全云计算之旅

立即注册
专业资深工程师驻守
7X24小时快速响应
一站式无忧技术支持
免费备案服务
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
在线客服
微信公众号
返回顶部
返回顶部 返回顶部
在线客服
在线客服