超详解——​深入明白Python中的位运算与常用内置函数/模块——底子篇 ...

打印 上一主题 下一主题

主题 1026|帖子 1026|积分 3078



目次
​编辑

1.位运算
2.常用内置函数/模块
math模块
random模块
decimal模块
常用内置函数
3.深入明白和应用
位运算的实际应用
1.权限管理
2.位图
3.图像处理
2.math模块的高级应用
统计计算
几何计算
总结


1.位运算

位运算是对整数在内存中的二进制表示进行操作的一种方法。在计算机中,数据是以二进制形式存储的,位运算可以直接操作这些二进制位,从而实现高效的数据处理。Python支持以下常见的位运算符:

  • 按位与(&):两个二进制数对应位都为1时,效果的该位才为1。
  • 按位或(|):两个二进制数对应位有一个为1,效果的该位就为1。
  • 按位异或(^):两个二进制数对应位差别,效果的该位为1。
  • 按位取反(~):将二进制数的每一位取反(0变1,1变0)。
  • 左移(<<):将二进制数的全部位向左移动指定的位数,右侧补0。
  • 右移(>>):将二进制数的全部位向右移动指定的位数,左侧补0(对于无符号数)或补符号位(对于有符号数)。
    1. a = 60  # 二进制:0011 1100
    2. b = 13  # 二进制:0000 1101
    3. # 按位与
    4. result = a & b  # 结果:0000 1100 (12)
    5. print(result)  # 输出:12
    6. # 按位或
    7. result = a | b  # 结果:0011 1101 (61)
    8. print(result)  # 输出:61
    9. # 按位异或
    10. result = a ^ b  # 结果:0011 0001 (49)
    11. print(result)  # 输出:49
    12. # 按位取反
    13. result = ~a  # 结果:1100 0011 (-61),在Python中,负数用补码表示
    14. print(result)  # 输出:-61
    15. # 左移
    16. result = a << 2  # 结果:1111 0000 (240)
    17. print(result)  # 输出:240
    18. # 右移
    19. result = a >> 2  # 结果:0000 1111 (15)
    20. print(result)  # 输出:15
    复制代码


  • 1.按位与(&)

    • 例子:a & b,即 60 & 13
    • 二进制表示:

      • 60:0011 1100
      • 13:0000 1101

    • 效果:0000 1100,即12

  • 2.按位或(|)

    • 例子:a | b,即 60 | 13
    • 二进制表示:

      • 60:0011 1100
      • 13:0000 1101

    • 效果:0011 1101,即61

  • 3.按位异或(^)

    • 例子:a ^ b,即 60 ^ 13
    • 二进制表示:

      • 60:0011 1100
      • 13:0000 1101

    • 效果:0011 0001,即49

  • 4.按位取反(~)

    • 例子:~a,即 ~60
    • 二进制表示:

      • 60:0011 1100
      • ~60:1100 0011(补码表示)

    • 效果:-61(Python使用补码表示负数)

  • 5.左移(<<)

    • 例子:a << 2,即 60 << 2
    • 二进制表示:

      • 60:0011 1100
      • 左移2位:1111 0000

    • 效果:240

  • 6.右移(>>)

    • 例子:a >> 2,即 60 >> 2
    • 二进制表示:

      • 60:0011 1100
      • 右移2位:0000 1111

    • 效果:15

2.常用内置函数/模块

Python提供了丰富的内置函数和模块,方便进行各种计算和操作。以下是一些常用的内置函数和模块:
math模块

math模块提供了许多数学函数,如平方根、对数、三角函数等。
  1. import math
  2. print(math.sqrt(16))  # 4.0,计算平方根
  3. print(math.log(8, 2))  # 3.0,以2为底的对数
  4. print(math.sin(math.pi / 2))  # 1.0,计算正弦值
复制代码
random模块

random模块用于生成随机数。
  1. import random
  2. print(random.randint(1, 10))  # 生成1到10之间的随机整数
  3. print(random.random())  # 生成0到1之间的随机浮点数
  4. print(random.choice(['a', 'b', 'c']))  # 从列表中随机选择一个元素
复制代码
decimal模块

decimal模块提供对十进制浮点数的准确计算。
  1. from decimal import Decimal
  2. a = Decimal('0.1')
  3. b = Decimal('0.2')
  4. c = a + b
  5. print(c)  # 0.3,精确的十进制计算
复制代码
常用内置函数

Python的内置函数简化了许多基本操作,比方计算绝对值、最大值、最小值、和等。
  1. print(abs(-5))  # 5,计算绝对值
  2. print(max(1, 2, 3))  # 3,返回最大值
  3. print(min(1, 2, 3))  # 1,返回最小值
  4. print(sum([1, 2, 3]))  # 6,计算和
复制代码
3.深入明白和应用

通过上面的例子,我们相识了Python中位运算的基本用法和一些常用内置函数/模块的使用。接下来,我们可以深入探讨一些应用场景和实际问题,进一步巩固这些知识。
位运算的实际应用

1.权限管理



  • 在系统权限管理中,经常使用位运算来表示和查抄权限。每个权限可以用一个二进制位表示,多个权限可以通过按位或(|)组合在一起。
    1. READ = 0b0001
    2. WRITE = 0b0010
    3. EXECUTE = 0b0100
    4. permission = READ | WRITE
    5. def has_permission(perm, check):
    6.     return perm & check == check
    7. print(has_permission(permission, READ))  # True
    8. print(has_permission(permission, EXECUTE))  # False
    复制代码
    2.位图
位图(bitmap)是一种使用位来表示集合的数据布局,常用于高效的集合运算和压缩存储。
  1. bitmap = 0
  2. def add_to_bitmap(bitmap, value):
  3.     return bitmap | (1 << value)
  4. def check_bitmap(bitmap, value):
  5.     return bitmap & (1 << value) != 0
  6. bitmap = add_to_bitmap(bitmap, 3)
  7. bitmap = add_to_bitmap(bitmap, 5)
  8. print(check_bitmap(bitmap, 3))  # True
  9. print(check_bitmap(bitmap, 4))  # False
复制代码
3.图像处理



  • 位运算在图像处理中的应用也非常广泛,比方图像的掩膜操作、颜色通道的分离和合并等。
    1. def apply_mask(value, mask):
    2.     return value & mask
    3. def combine_channels(r, g, b):
    4.     return (r << 16) | (g << 8) | b
    5. mask = 0xFF
    6. value = 0x123456
    7. masked_value = apply_mask(value, mask)
    8. print(hex(masked_value))  # 0x56
    9. r = 0x12
    10. g = 0x34
    11. b = 0x56
    12. combined_value = combine_channels(r, g, b)
    13. print(hex(combined_value))  # 0x123456
    复制代码
    2.math模块的高级应用
  • 统计计算

    • 使用math模块可以进行一些基本的统计计算,比方平均值、标准差等。
      1. import math
      2. data = [2, 4, 4, 4, 5, 5, 7, 9]
      3. def mean(data):
      4.     return sum(data) / len(data)
      5. def variance(data):
      6.     m = mean(data)
      7.     return sum((x - m) ** 2 for x in data) / len(data)
      8. def std_dev(data):
      9.     return math.sqrt(variance(data))
      10. print(mean(data))  # 5.0
      11. print(std_dev(data))  # 2.0
      复制代码
      几何计算
    • math模块中的三角函数可以用于几何计算,比方计算三角形的面积、圆的周长和面积等。
      1. import math
      2. def triangle_area(a, b, c):
      3.     s = (a + b + c) / 2
      4.     return math.sqrt(s * (s - a) * (s - b) * (s - c))
      5. def circle_area(radius):
      6.     return math.pi * radius ** 2
      7. def circle_circumference(radius):
      8.     return 2 * math.pi * radius
      9. print(triangle_area(3, 4, 5))  # 6.0
      10. print(circle_area(3))  # 28.274333882308138
      11. print(circle_circumference(3))  # 18.84955592153876
      复制代码
      总结

                 Python在处理低级别二进制操作和高级别数学计算上的强大功能。位运算提供了高效的数据处理本领,尤其在权限管理、位图处理和图像处理等范畴具有告急应用。而内置的数学和随机数函数则为科学计算、数据分析等范畴提供了强大的支持。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

科技颠覆者

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表