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

news2024/11/17 14:34:00

目录

​编辑

1.位运算

2.常用内置函数/模块

math模块

random模块

decimal模块

常用内置函数

3.深入理解和应用

位运算的实际应用

1.权限管理

2.位图

3.图像处理

2.math模块的高级应用

统计计算

几何计算

总结


1.位运算

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

  1. 按位与(&):两个二进制数对应位都为1时,结果的该位才为1。
  2. 按位或(|):两个二进制数对应位有一个为1,结果的该位就为1。
  3. 按位异或(^):两个二进制数对应位不同,结果的该位为1。
  4. 按位取反(~):将二进制数的每一位取反(0变1,1变0)。
  5. 左移(<<):将二进制数的所有位向左移动指定的位数,右侧补0。
  6. 右移(>>):将二进制数的所有位向右移动指定的位数,左侧补0(对于无符号数)或补符号位(对于有符号数)。
    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模块提供了许多数学函数,如平方根、对数、三角函数等。

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模块用于生成随机数。

import random

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

decimal模块

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

from decimal import Decimal

a = Decimal('0.1')
b = Decimal('0.2')
c = a + b
print(c)  # 0.3,精确的十进制计算

常用内置函数

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

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.权限管理

  • 在系统权限管理中,常常使用位运算来表示和检查权限。每个权限可以用一个二进制位表示,多个权限可以通过按位或(|)组合在一起。
    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)是一种使用位来表示集合的数据结构,常用于高效的集合运算和压缩存储。

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.图像处理

  • 位运算在图像处理中的应用也非常广泛,例如图像的掩膜操作、颜色通道的分离和合并等。
    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模块可以进行一些基本的统计计算,例如平均值、标准差等。
      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模块中的三角函数可以用于几何计算,例如计算三角形的面积、圆的周长和面积等。
      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在处理低级别二进制操作和高级别数学计算上的强大功能。位运算提供了高效的数据处理手段,尤其在权限管理、位图处理和图像处理等领域具有重要应用。而内置的数学和随机数函数则为科学计算、数据分析等领域提供了强大的支持。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1817920.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

成功者的思维方式——逆向思维

在竞争激烈的现代社会中&#xff0c;成功者往往具备一种与众不同的思维方式——逆向思维。 1、原谅别人的过失 在大多数人的思维中&#xff0c;对于别人的过失往往持有批评和指责的态度。但是&#xff0c;每个人都有犯错的时候&#xff0c;而原谅不仅能化解矛盾&#xff0c;…

气膜馆在夏季如何控制室内温度—轻空间

气膜馆以其快速搭建、灵活使用和高效节能的特点在多种场合中得到广泛应用。然而&#xff0c;夏季的高温环境对气膜馆内的温度控制提出了巨大挑战。本文将探讨气膜馆在夏季如何有效控制室内温度&#xff0c;确保为使用者提供一个舒适的环境。 1. 优质膜材选择 隔热膜材&#xff…

【Three.js】知识梳理十五:相机控制器Controls

在 3D 场景中&#xff0c;摄像机的控制尤为重要&#xff0c;因为它决定了用户如何观察和与场景互动。Three.js 提供了多种相机控制器&#xff0c;最常用的有 OrbitControls、TrackballControls、FlyControls 和 FirstPersonControls。OrbitControls 适合用于查看和检查 3D 模型…

成都百洲文化传媒有限公司电商服务的领航者

在当今数字化浪潮席卷全球的时代&#xff0c;电商行业以其独特的魅力和无穷的潜力&#xff0c;正成为推动经济发展的重要引擎。在这一领域&#xff0c;成都百洲文化传媒有限公司以其专业的电商服务和创新的营销理念&#xff0c;成为了行业的佼佼者&#xff0c;引领着电商服务的…

简单塔防小游戏

学习目标&#xff1a;熟悉塔防游戏核心战斗 游戏画面 项目结构目录 核心代码&#xff1a; if ( Input.GetMouseButtonDown(0)){if (EventSystem.current.IsPointerOverGameObject()false){//开发炮台的建造Ray ray Camera.main.ScreenPointToRay(Input.mousePosition);Rayca…

Openstack删除虚拟机失败,状态变成ERROR,如何完成正常删除

1、问题描述 在openstack平台批量删除了几台云主机&#xff0c;但删除过程因为消息队列故障导致cinder volume服务异常&#xff0c;有两台主机状态变为ERROR,无法正常删除。 2、问题处理 使用nova reset-state --active xxxx&#xff08;uuid&#xff09;将主机状态重置为activ…

Mac vscode could not import github.com/gin-gonic/gin

问题背景&#xff1a; 第一次导入一个go的项目就报红 问题分析&#xff1a; 其实就是之前没有下载和导入gin这个web框架包 gin是一个golang的微框架&#xff0c;封装比较优雅&#xff0c;API友好&#xff0c;源码注释比较明确。 问题解决&#xff1a; 依次输入以下命令。通…

2024护眼落地灯十大品牌有哪些?揭晓年度十大护眼灯品牌!

2024护眼落地灯十大品牌有哪些&#xff1f;家里的台灯照明范围有限&#xff0c;阅读面和房间的空间光线亮暗差大&#xff0c;眼睛需要同时适应亮和暗两种光线&#xff0c;频繁收缩&#xff0c;极易眼疲劳。再加上学习时间过长&#xff0c;眼睛得不到休息&#xff0c;从而引起近…

React+TS前台项目实战(八)-- 全局常用组件模态框Modal封装

文章目录 前言Modal模态框组件1. 功能分析2. 代码详细注释说明3. 使用方式4. 效果展示 总结 前言 今天这篇主要讲项目中经常会用到的模态框Modal组件封装。模态框可用在很多地方&#xff0c;比如弹窗Dialog使用、消息提示Message使用等都可以在外层套上Modal组件&#xff0c;下…

6.11运算符重载

友元 友元的设置是因为这样就可以访问类中的private成员 设置某一个类或者是函数为友元的&#xff0c;用friend关键字声明友元 友元的三种形式&#xff1a;普通函数、成员函数、友元类 普通函数&#xff1a;在类内部声明然后再类外部定义。 class Point{ public:friend f…

Linux2(文件类型分类 基本命令2 重定向)

目录 一、文件类型分类 二、基本命令2 1. find 帮助查询 2. stat 查看文件的信息 3. wc 统计文本 4. 查看文本内容 4.1 cat 4.2 more 4.3 less 4.4 head 4.5 tail 5. cal 显示日历 6. date 显示时间 7. du 文件大小 8. ln 链接 软链接 硬链接 区别 9. histo…

6.8日志系统

当做大型项目的时候&#xff0c;出了bug可能需要借助于日志检查&#xff0c;小项目一般是打断点。 服务器是一直在运行的&#xff0c;不能停止&#xff0c;可以借助于日志检查错误。 日志分为两种&#xff1a;业务级别的日志&#xff08;供用户分析业务过程&#xff09;&…

基于springboot实现教学资料管理系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现教学资料管理系统演示 摘要 使用旧方法对教学资料管理系统的信息进行系统化管理已经不再让人们信赖了&#xff0c;把现在的网络信息技术运用在教学资料管理系统的管理上面可以解决许多信息管理上面的难题&#xff0c;比如处理数据时间很长&#xff0c;数据存…

【ARM Coresight Debug 系列 -- ARMv8/v9 Watchpoint 软件实现地址监控详细介绍】

请阅读【嵌入式开发学习必备专栏 】 文章目录 ARMv8/v9 Watchpoint exceptionsWatchpoint 配置信息读取Execution conditionsWatchpoint data address comparisonsSize of the data accessWatchpoint 软件配置流程Watchpoint Type 使用介绍WT, Bit [20]: Watchpoint TypeLBN, B…

《一头扎进》系列之Python+Selenium框架实战篇23- 价值好几K的框架,呵!这个框架有点意思啊!!!

宏哥微信粉丝群&#xff1a;https://bbs.csdn.net/topics/618423372 有兴趣的可以扫码加入 1.简介 前面文章&#xff0c;我们实现了框架的一部分功能&#xff0c;包括日志类和浏览器引擎类的封装&#xff0c;今天我们继续封装一个基类和介绍如何实现POM。关于基类&#xff0c;…

JAVA小知识17:数组,从0基础到掌握

数组&#xff0c;无论在哪种编程语言当中都是最基础&#xff0c;最广泛使用的一种线性表数据结构&#xff0c;这篇文章将从多个角度来从浅入深的讲述数组。 本文讲述了数组的概念&#xff0c;定义&#xff0c;初始化方法以及如何遍历数组&#xff0c;如何赋值&#xff0c;关于数…

基于WPF技术的换热站智能监控系统03--实现左侧加载动画

1、左侧布局规划 左侧分5行&#xff0c;每行的高度通过height属性来指定&#xff0c;1.2*表示占1.2倍的宽度 2、创建用户控件 在WPF中想要进行个性化处理&#xff0c;主要可以通过三个方面来实现&#xff1a;控件模板&#xff08;控件模板、数据模板、数据容器模板&#xff09…

EDEX-UI这个终端模拟器

eDEX-UI 是一款开源、免费、跨平台的全屏终端模拟器和系统监视器&#xff0c;外观和操作界面极其科幻&#xff0c;灵感来自电影《创战纪》的会议室特效场景。作者倾注了大量心血&#xff0c;使得它不仅拥有酷炫的操作界面&#xff0c;还具备清晰爽脆的音效。 优点&#xff1a; …

【车载AI音视频电脑】4路AHD 130万像素双卡车载录像机

产品主要特点&#xff1a; -支持4路实时高清AHD 720P录像 -SD卡记录数据&#xff08;可支持2张大容量SD卡,最大支持单张256G&#xff09; -支持GPS全球定位, 可选模块 -支持WIFI高速自动下载功能, 可选模块 -内置3/4G模块&#xff0c;实时预览和远程管理&#xff0c; 可选…

打造你的专属扭蛋机:淘宝扭蛋机小程序搭建全攻略

想要在互联网娱乐领域大展拳脚吗&#xff1f;淘宝扭蛋机小程序或许是你的不二选择。本文将为你提供详细的搭建教程&#xff0c;帮助你轻松打造属于自己的扭蛋机小程序。 一、了解扭蛋机小程序的基本原理 在开始搭建之前&#xff0c;我们需要了解扭蛋机小程序的基本原理。扭蛋机…