前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >超详解——​深入理解Python中的位运算与常用内置函数/模块——基础篇

超详解——​深入理解Python中的位运算与常用内置函数/模块——基础篇

作者头像
小李很执着
发布2024-06-15 10:28:22
590
发布2024-06-15 10:28:22
举报
文章被收录于专栏:学习笔记学习笔记

1.位运算

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

按位与(&):两个二进制数对应位都为1时,结果的该位才为1。

按位或(|):两个二进制数对应位有一个为1,结果的该位就为1。

按位异或(^):两个二进制数对应位不同,结果的该位为1。

按位取反(~):将二进制数的每一位取反(0变1,1变0)。

左移(<<):将二进制数的所有位向左移动指定的位数,右侧补0。

右移(>>):将二进制数的所有位向右移动指定的位数,左侧补0(对于无符号数)或补符号位(对于有符号数)。

代码语言:javascript
复制
a = 60  # 二进制:0011 1100
b = 13  # 二进制:0000 1101

# 按位与
result = a & b  # 结果:0000 1100 (12)
print(result)  # 输出:12

# 按位或
result = a | b  # 结果:0011 1101 (61)
print(result)  # 输出:61

# 按位异或
result = a ^ b  # 结果:0011 0001 (49)
print(result)  # 输出:49

# 按位取反
result = ~a  # 结果:1100 0011 (-61),在Python中,负数用补码表示
print(result)  # 输出:-61

# 左移
result = a << 2  # 结果:1111 0000 (240)
print(result)  # 输出:240

# 右移
result = a >> 2  # 结果:0000 1111 (15)
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模块提供了许多数学函数,如平方根、对数、三角函数等。

代码语言:javascript
复制
import math

print(math.sqrt(16))  # 4.0,计算平方根
print(math.log(8, 2))  # 3.0,以2为底的对数
print(math.sin(math.pi / 2))  # 1.0,计算正弦值
random模块

random模块用于生成随机数。

代码语言:javascript
复制
import random

print(random.randint(1, 10))  # 生成1到10之间的随机整数
print(random.random())  # 生成0到1之间的随机浮点数
print(random.choice(['a', 'b', 'c']))  # 从列表中随机选择一个元素
decimal模块

decimal模块提供对十进制浮点数的精确计算。

代码语言:javascript
复制
from decimal import Decimal

a = Decimal('0.1')
b = Decimal('0.2')
c = a + b
print(c)  # 0.3,精确的十进制计算
常用内置函数

Python的内置函数简化了许多基本操作,例如计算绝对值、最大值、最小值、和等。

代码语言:javascript
复制
print(abs(-5))  # 5,计算绝对值
print(max(1, 2, 3))  # 3,返回最大值
print(min(1, 2, 3))  # 1,返回最小值
print(sum([1, 2, 3]))  # 6,计算和

3.深入理解和应用

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

位运算的实际应用

1.权限管理

在系统权限管理中,常常使用位运算来表示和检查权限。每个权限可以用一个二进制位表示,多个权限可以通过按位或(|)组合在一起。

代码语言:javascript
复制
READ = 0b0001
WRITE = 0b0010
EXECUTE = 0b0100

permission = READ | WRITE

def has_permission(perm, check):
    return perm & check == check

print(has_permission(permission, READ))  # True
print(has_permission(permission, EXECUTE))  # False
2.位图

位图(bitmap)是一种使用位来表示集合的数据结构,常用于高效的集合运算和压缩存储。

代码语言:javascript
复制
bitmap = 0

def add_to_bitmap(bitmap, value):
    return bitmap | (1 << value)

def check_bitmap(bitmap, value):
    return bitmap & (1 << value) != 0

bitmap = add_to_bitmap(bitmap, 3)
bitmap = add_to_bitmap(bitmap, 5)

print(check_bitmap(bitmap, 3))  # True
print(check_bitmap(bitmap, 4))  # False
3.图像处理

位运算在图像处理中的应用也非常广泛,例如图像的掩膜操作、颜色通道的分离和合并等。

代码语言:javascript
复制
def apply_mask(value, mask):
    return value & mask

def combine_channels(r, g, b):
    return (r << 16) | (g << 8) | b

mask = 0xFF
value = 0x123456
masked_value = apply_mask(value, mask)
print(hex(masked_value))  # 0x56

r = 0x12
g = 0x34
b = 0x56
combined_value = combine_channels(r, g, b)
print(hex(combined_value))  # 0x123456

2.math模块的高级应用

统计计算

使用math模块可以进行一些基本的统计计算,例如平均值、标准差等。

代码语言:javascript
复制
import math

data = [2, 4, 4, 4, 5, 5, 7, 9]

def mean(data):
    return sum(data) / len(data)

def variance(data):
    m = mean(data)
    return sum((x - m) ** 2 for x in data) / len(data)

def std_dev(data):
    return math.sqrt(variance(data))

print(mean(data))  # 5.0
print(std_dev(data))  # 2.0
几何计算

math模块中的三角函数可以用于几何计算,例如计算三角形的面积、圆的周长和面积等。

代码语言:javascript
复制
import math

def triangle_area(a, b, c):
    s = (a + b + c) / 2
    return math.sqrt(s * (s - a) * (s - b) * (s - c))

def circle_area(radius):
    return math.pi * radius ** 2

def circle_circumference(radius):
    return 2 * math.pi * radius

print(triangle_area(3, 4, 5))  # 6.0
print(circle_area(3))  # 28.274333882308138
print(circle_circumference(3))  # 18.84955592153876

总结

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-06-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.位运算
  • 2.常用内置函数/模块
    • math模块
      • random模块
        • decimal模块
          • 常用内置函数
          • 3.深入理解和应用
            • 位运算的实际应用
              • 1.权限管理
              • 2.位图
              • 3.图像处理
            • 2.math模块的高级应用
              • 统计计算
              • 几何计算
          • 总结
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档