day08. 02 Python中的位运算符案例与解析

  • 理解并掌握Python中的位运算符:异或(^)、与(&)、或(|)、反(~)、右移(>>)、无符号右移(>>>,注意Python中无原生的>>>运算符,但可通过其他方式模拟)。
  • 能够通过实际案例演示位运算符的应用。
课程内容
一、引言

位运算符是对整数的二进制位进行操作的一种运算符。在Python中,这些运算符对于处理底层数据、优化算法等方面非常有用。

二、位运算符介绍
  1. 异或运算符(^)
    • 定义:对两个数的二进制位进行异或操作,相同为0,不同为1。
    • 案例:交换两个数的值(不使用临时变量)
       

      python复制代码

      a = 5 # 二进制 101
      b = 3 # 二进制 011
      a = a ^ b # a = 101 ^ 011 = 110 (6)
      b = a ^ b # b = 110 ^ 011 = 101 (5),此时a的值已经变成了b的原始值
      a = a ^ b # a = 101 ^ 110 = 011 (3),现在a和b的值已经交换
      print(f"a={a}, b={b}") # 输出 a=3, b=5
  2. 与运算符(&)
    • 定义:对两个数的二进制位进行与操作,相同为1,不同为0。
    • 案例:检查一个数是否为偶数
       

      python复制代码

      num = 10 # 二进制 1010
      if num & 1 == 0: # 检查最低位是否为0(偶数)
      print("偶数")
      else:
      print("奇数")
  3. 或运算符(|)
    • 定义:对两个数的二进制位进行或操作,相同或不同为1,全为0为0。
    • 案例:设置特定二进制位
       

      python复制代码

      num = 5 # 二进制 101
      num |= 4 # num = num | 4, 4的二进制是100,所以结果为101 | 100 = 101 (5,但实际上是设置了第3位)
      print(num) # 输出 5,但注意这里并没有改变值,只是演示了操作
  4. 反运算符(~)
    • 定义:对数的二进制位进行取反操作,0变1,1变0。注意Python中的结果是按补码形式返回的。
    • 案例:计算一个数的补码
       

      python复制代码

      num = 6 # 二进制 0110
      num_ = ~num # 实际上是计算了补码,结果为-7
      print(num_) # 输出 -7
  5. 右移运算符(>>)
    • 定义:将数的二进制位向右移动指定的位数,左侧用符号位填充(对于带符号整数)。
    • 案例:快速除以2的幂
       

      python复制代码

      num = 8 # 二进制 1000
      result = num >> 2 # 右移2位,相当于除以2的2次方
      print(result) # 输出 2
  6. 无符号右移运算符(>>>)
    • 注意:Python没有原生的无符号右移运算符(>>>)。但可以通过其他方式模拟,比如先将数转换为正数(如果它是负数),执行右移后,再根据情况调整结果。
    • 模拟案例:模拟无符号右移
       

      python复制代码

      def unsigned_right_shift(num, bits):
      # 转为正数处理
      mask = (1 << bits) - 1
      return (num & mask) >> bits
      num = -8 # 二进制 1111 1000 (假设是8位,实际Python中int是动态长度的)
      result = unsigned_right_shift(num, 3) # 尝试模拟无符号右移3位
      print(result) # 输出结果将依赖于num的二进制表示和bits的值

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

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

相关文章

艾滋病隐球菌病的病原学诊断方法包括?

艾滋病隐球菌病的病原学诊断方法包括()查看答案 A.培养B.隐球菌抗原C.墨汁染色D.PCR 在感染性疾病研究中&#xff0c;单细胞转录组学的应用包括哪些()? A.细胞异质性研究B.基因组突变检测C.感染过程单细胞分析D.代谢通路分析 开展病原微生物网络实验室体系建设&#xff0c;应通…

Linux--平台设备、平台驱动的注册源码分析

一、设备和驱动的注册 设备注册两种方式&#xff1a; 1、从设备树解析动态注册。设备树dts文件中定义了设备节点&#xff0c;描述了硬件信息&#xff0c;比如寄存器信息&#xff0c;引脚信息等&#xff0c;内核将从设备树中解析得到的platform_device注册到平台总线中。具体设…

一个opencv实现检测程序

引言 图像处理是计算机视觉中的一个重要领域&#xff0c;它在许多应用中扮演着关键角色&#xff0c;如自动驾驶、医疗图像分析和人脸识别等。边缘检测是图像处理中的基本任务之一&#xff0c;它用于识别图像中的显著边界。本文将通过一个基于 Python 和 OpenCV 的示例程序&…

UniApp 中 Web/H5 正确使用反向代理解决跨域问题

因为 Vue3 的构建工具是 Vite&#xff0c;所以配置 vue.config.js 是没用的&#xff08;Vue2 因为使用 webpack 所以才用这个文件&#xff09; 这里提供一份 vue.config.js 的示例&#xff1a; module.exports {devServer: {proxy: {/api: {target: http://example.com,chan…

Python学习速成必备知识,(20道练习题)!

基础题练习 1、打印出1-100之间的所有偶数&#xff1a; for num in range(1, 101):if num % 2 0:print(num) 2、打印出用户输入的字符串的长度&#xff1a; string input("请输入一个字符串&#xff1a;")print("字符串的长度为&#xff1a;", len(str…

使用Python进行文件合并和分割

哈喽,大家好,我是木头左! 引言 在数据处理过程中,经常需要将多个文件合并为一个文件,或者将一个大文件分割成多个小文件。Python作为一种功能强大的编程语言,提供了多种方法来实现这一目标。本文将介绍如何使用Python进行文件合并和分割。 文件合并 1. 逐行合并 最简…

Git不想跟踪某个文件

如果你不想跟踪某个文件&#xff0c;可以将该文件路径添加到 .gitignore 文件中。.gitignore 文件用于告诉 Git 哪些文件或目录应该被忽略&#xff0c;不进行版本控制。以下是具体步骤&#xff1a; 编辑 .gitignore 文件&#xff1a;在项目的根目录下找到或创建一个 .gitignore…

More Effective C++ 35个改善编程与设计的有效方法笔记与心得 5

五. 技术 条款25&#xff1a; 将 constructor 和 non-member functions虚化 请记住&#xff1a; 1. 利用重载技术&#xff08;overload&#xff09;避免隐式类型转换&#xff08;implicit type conversions&#xff09; ‌‌‌‌  重载技术是指在同一个作用域中声明多个同…

差分进化算法(Differential Evolution)及其python实现

### 背景&#xff1a; 差分进化算法&#xff08;Differential Evolution&#xff0c;DE&#xff09;是一种基于种群的优化算法&#xff0c;旨在解决连续优化问题。DE 最初由 Price 和 Storn 提出&#xff0c;是一种简单但有效的全局优化算法&#xff0c;适用于具有非线性、非光…

rillflow运行时,跳转子应用时,页面循环自动刷新

rill-flow-ui执行运行完毕&#xff0c;生成如下运行url&#xff0c;http://110.108.190.18:8080/选中执行&#xff0c;跳转子应用循环自动刷新&#xff0c;debugger发现主应用在和微应用的默认地址建立链接失败&#xff0c; 改为运行 http://localhost:8080/&#xff0c;即可和…

excel表格如何换行,这几个操作方法要收藏好

Excel表格作为一款强大的数据处理工具&#xff0c;在日常工作和生活中被广泛应用。当需要在单元格内显示较长的文本内容或使数据更加清晰易读时&#xff0c;我们需要掌握一些换行技巧。下面将介绍几种常用的Excel换行方法&#xff1a; 一、使用快捷键换行 1、首先&#xff0c;…

iSDF改进优化笔记

《iSDF: Real-Time Neural Signed Distance Fields for Robot Perception》论文提出了一种实时神经签名距离场&#xff08;SDF&#xff09;重建的方法&#xff0c;该方法在多个方面表现优异。然而&#xff0c;仍有一些潜在的改进空间&#xff1a; 1. 扩展实验范围 更多数据集和…

openresty lua用Redis的Stream解决消息订阅问题

使用 Redis Streams 解决消息订阅和消费的问题&#xff0c;可以避免在订阅模式下的连接管理问题。下面是如何使用 OpenResty 和 Redis Streams 实现类似的功能。 配置 nginx.conf 确保你的 nginx.conf 文件中配置了 Lua 模块和 Redis 集群的连接信息&#xff1a; http {lua_…

暑假学习DevEco Studio第一天

学习目标&#xff1a; 掌握构建第一个ArkTS应用 学习内容&#xff1a; 容器的应用 创建流程 点击file&#xff0c;new-> create project 点击empty ->next 进入配置界面 点击finsh&#xff0c;生成下面图片 这里需要注意记住index.ets &#xff0c;这是显示页面 –…

五款免费可视化利器分享,助力打造数字孪生新体验!

在当今数据驱动的时代&#xff0c;可视化工具已成为各行各业不可或缺的助手。它们不仅能帮助我们更好地理解和分析数据&#xff0c;还能以直观、生动的方式呈现复杂信息&#xff0c;提升沟通和决策效率。本文将为大家介绍五款免费的可视化工具&#xff0c;总有一款适合你。 一…

selenium 获取请求头cookie信息

在做接口测试如登陆接口过于复杂&#xff0c;可以先使用UI自动化把cookie保存在本地供接口测试使用 import time from selenium import webdriver from selenium.webdriver.chrome.options import Optionsdef get_seeion():# 创建Chrome浏览器的Options对象chrome_options Op…

如何做好企业品牌推广,看这篇文章就够了

在当今竞争激烈的市场环境中&#xff0c;品牌推广策略与方式成为企业成功的关键。因为相比起企业&#xff0c;消费者会更愿意为品牌买单。那么企业如何将品牌推广做好呢?今日投媒网与您分享。 1.明确品牌定位与目标受众 一切推广活动的起点在于清晰的品牌定位。首先&#xf…

苹果ios安卓apk应用APP文件怎么修改手机APP显示的名称

当我们安装了一款 APP后&#xff0c;该 APP的名称可能就是我们看到的名称&#xff0c;那么我们可以通过修改手机 APP显示的名称来修改该 APP文件的名称&#xff0c;那么具体怎么操作呢&#xff1f;下面就给大家来介绍一下。 首先我们进入手机上的应用商店&#xff0c;然后在搜…

SolrCloud Autoscaling 自动添加副本

SolrCloud Autoscaling 自动添加副本 前言 问题描述 起因是这样的&#xff0c;我在本地调试 Solr 源码&#xff08;版本 7.7.3&#xff09;&#xff0c;用 IDEA 以 solrcloud 方式启动了 2 个 Solr 服务&#xff0c;如下所示&#xff1a; 上图的启动参数 VM Options 如下&am…

RocketMQ实战:一键在docker中搭建rocketmq和doshboard环境

在本篇博客中&#xff0c;我们将详细介绍如何在 Docker 环境中一键部署 RocketMQ 和其 Dashboard。这个过程基于一个预配置的 Docker Compose 文件&#xff0c;使得部署变得简单高效。 项目介绍 该项目提供了一套 Docker Compose 配置&#xff0c;用于快速部署 RocketMQ 及其…